前几天帮同事看一个 bug,他屏幕共享给我,代码写到一半,他说:"你等一下,我把这段代码挪上去。"
然后我看到他选中了一段代码,按住鼠标,拖到了上面,松手。代码就移动过去了。
整个过程大概三秒。
我愣了一下,问他:"你刚才……拖的?"
他说:"对啊,VS Code 现在支持拖拽了。"
我说:"我用了这么多年,从来不知道还能拖。"
他说:"默认关的,你得去设置里打开。"
那个下午,我回去翻了翻更新日志,才发现这个功能确实存在,而且藏得挺深——editor.dragAndDrop,默认 false。
拖拽文本这个操作,在大多数编辑器里早就存在了。Sublime Text、Notepad++、甚至浏览器里的文本框,都支持。VS Code 拖到现在才加,多少有点出人意料。
但更让我纠结的是另一个问题:在写代码的场景里,拖拽文本真的是一个好操作吗?
我的日常编辑习惯是这样的:
- 移动一行:
Alt + ↑/Alt + ↓ - 移动一段代码:剪切 → 光标移到目标位置 → 粘贴
- 重构:多光标、查找替换、或者直接让 AI 改
这些操作的共同点是:手不用离开键盘。
而拖拽意味着:右手离开键盘、握住鼠标、选中、拖动、瞄准、松手。整个过程需要视觉定位,拖拽过程中如果目标位置在屏幕外,还得等编辑器自动滚动。
说实话,在代码编辑器里,我几乎想不出什么场景是"拖拽"比"键盘操作"更高效的。
但它确实有用武之地
冷静下来想,拖拽文本在几个特定场景里是合理的:
大段代码的跨屏移动。 如果一段代码要从文件开头移到文件结尾,用键盘操作需要:剪切、Ctrl + End、粘贴。拖拽的话,直接拖到滚动条附近,编辑器自动滚动到目标位置,松手。这个场景下拖拽确实更直观。
新手用户。 对于刚接触 VS Code 的人来说,"选中、拖过去"是最符合直觉的操作。他们不需要记住任何快捷键。
鼠标已经在手上了。 如果你刚用鼠标完成了一次点击操作,顺手拖一下,比"把手放回键盘、敲快捷键"更自然。
下面来感受下效果
另外还值得一说的是,当你拖动之前,可以再win先按ctrl,然后再拖动,这样的效果相当于把内容复制过去,原来的内容还在。再mac上需要按alt
这个功能的定位很明确:它服务于"鼠标优先"的用户,而不是"键盘优先"的用户。
VS Code 作为一款覆盖了广泛用户群体的编辑器,加入这个特性是合理的。它不会影响键盘流用户的体验,同时给习惯用鼠标的人提供了一个更自然的操作方式。
至于我——我大概不会打开它。不是因为我觉得它不好,而是因为我已经习惯了键盘操作,而且我不想承担误触的风险。
但这正是 VS Code 做得好的地方:它给了你选择,而不是替你做决定。