vscode怎样用鼠标拖动复制粘

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vscode怎样用鼠标拖动复制粘相关的知识,希望对你有一定的参考价值。

参考技术A 在3月发布时,它将处于一个名为"editor.selectionClipboard"的设置中,默认情况下该设置是关闭的,直到我们更好地理解在每次选择更改时写入剪贴板的性能影响。
所以理论上只要打开"editor.selectionClipboard"的设置就可以开启鼠标中键粘贴的功能。
或者可以用VS Code的拖拽功能。比如你可以在编辑器组中对 Tab 进行拖拽,把它放到你想要的位置,在我们移动鼠标时,VS Code 会把释放鼠标后编辑器将会放置的位置显示了出来,十分直观。

鼠标拖动选择不适用于触摸设备。我怎样才能使它成为可能?

【中文标题】鼠标拖动选择不适用于触摸设备。我怎样才能使它成为可能?【英文标题】:The mouse drag selection does not work on touch devices. How can I make it possible? 【发布时间】:2016-02-29 07:27:02 【问题描述】:

鼠标拖动选择不适用于触控设备。我该如何解决这个问题。请检查我的小提琴

http://jsfiddle.net/Brv6J/3/

$(function () 
    var isMouseDown = false;
    $("#our_table td")
        .mousedown(function () 
            isMouseDown = true;
            $(this).toggleClass("highlighted");
            return false; // prevent text selection
        )
        .mouseover(function () 
            if (isMouseDown) 
                $(this).toggleClass("highlighted");
            
        );
    $(document)
        .mouseup(function () 
            isMouseDown = false;
        );
);

【问题讨论】:

有单独的触摸事件用于移动设备:developer.mozilla.org/en-US/docs/Web/API/Touch_events 【参考方案1】:

给元素附加触摸事件,例如touchstart、touchend、touchmove。 例如,

$("#our_table td")
.touchstart(function () 
    isMouseDown = true;
    $(this).toggleClass("highlighted");
    return false; // prevent text selection
)
.touchmove(function () 
    if (isMouseDown) 
        $(this).toggleClass("highlighted");
    
);

【讨论】:

请提供小提琴 我认为 jQuery 中的触摸事件只能与 .on() 结合使用。【参考方案2】:

简介 1

我认为您不能在同一个脚本中制作桌面版和移动版。 在这个答案中,我只关注mobile 版本,因为您拥有桌面。只需检查您使用的是移动设备还是桌面设备并刷新正确的脚本。

简介2

这个问题的挑战是:

    mouse 事件相比,touch 事件很少。 与返回鼠标正在移动的当前节点的mousemove事件相比,touchmove返回您开始移动的元素。也就是说,如果你从节点a开始,移动到节点bevent.target仍然返回节点a

实际答案

为了解决这些问题,我编写了代码检查 touchstarttouchmove 中的元素正在移动,然后在正确的元素上进行切换。

// first - store the coords of all the cells for the position check
var matrix = $('#our_table td').map(function()
  var e = $(this),
      o = e.offset(),
      w = e.width(),
      h = e.height();
  
  return 
    top: o.top,
    left: o.left,
    right: o.left + w,
    bottom: o.top + h,
    e: e
  
).get();

var currentTarget = $(),
    activeTarget = $();


var touchF = function(e) 
   var touch = e.originalEvent.touches[0];
   currentTarget = getCurrent(
       
         clientX: touch.clientX,
         clientY: touch.clientY
       
     );
  
    // if the touch is in one of the cells and it's disfferent than the last touch cell
    if (currentTarget && currentTarget != activeTarget) 
      activeTarget = currentTarget;
      activeTarget.toggleClass('highlighted');
    
  

$('#our_table').bind(
  touchstart: touchF,
  touchmove: touchF
);

function getCurrent(touch) 
  // check if the touch coords are in the position of one of the cells and which one
  var a = matrix.filter(function(obj) 
    var b = (
      touch.clientX > obj.left &&
      touch.clientX < obj.right &&
      touch.clientY < obj.bottom &&
      touch.clientY > obj.top
    );
    
    return b;
  );
  
  return a.length > 0 ? a[0].e : null;
table td 
  width:100px;
  height:100px;
  text-align:center;
  vertical-align:middle;
  background-color:#ccc;
  border:1px solid #fff;


table td.highlighted 
  background-color:#999;
<table cellpadding="0" cellspacing="0" id="our_table">
  <tr>
    <td>a</td>
    <td>b</td>
    <td>c</td>
  </tr>
  <tr>
    <td>d</td>
    <td>e</td>
    <td>f</td>
  </tr>
  <tr>
    <td>g</td>
    <td>h</td>
    <td>i</td>
  </tr>
</table>

小提琴:http://jsbin.com/favobu

【讨论】:

以上是关于vscode怎样用鼠标拖动复制粘的主要内容,如果未能解决你的问题,请参考以下文章

怎样用Sublime Text补全HTML基本结构,并附补全的代码,方便以后直接复制粘帖使用

在word中要复制已选定文档,可以按下()键,同时用鼠标拖动选定文本到指定位置完成复制

excel工作表的填充柄也可以用鼠标右键拖动操作

在用鼠标拖动窗口时有阴影怎么办

VMware Workstation 在安装VMware Tools并重启后不能拖动复制文件

vb 怎样让 RichTextBox 中的文字 无法让鼠标拖动选中