VSCode 中 Alt 键拖动文本并非移动或复制功能,而是触发矩形列选择;真正拖动文本需先选中再直接拖拽,Ctrl/Cmd 拖拽为复制,且 editor.dragAndDrop 必须启用。

VSCode 里按住 Alt 键拖动文本,不是标准功能 —— 它根本不存在。 你可能混淆了 Alt + 鼠标点击(多光标)、Alt + 拖动(列选择),或误记了 Ctrl/Cmd 在拖拽时的复制行为。
Alt + 鼠标拖动 ≠ 文本拖动,而是列选择模式
在 VSCode 中,Alt(Windows/Linux)或 Option(macOS)配合鼠标拖动,触发的是「矩形列选择」,不是移动或复制文本块:
- 它选中的是垂直对齐的矩形区域(比如多行开头的空格、同一列的变量名),不是语义上的“代码块”
- 松手后只是选中,不会自动移动或粘贴;要编辑需手动输入,所有列位置同步响应
- 常见用途:批量修改缩进、对齐注释、提取配置项某列值
- 若想取消列选,按
Esc或点击编辑器任意空白处即可
真正能拖动文本的,是选中后直接拖(不按 Alt)
VSCode 支持拖拽移动已选中文本,但这个操作和 Alt 无关,关键点如下:
- 必须先用鼠标或键盘(如
Shift+→、Ctrl+L)完整选中一段文本(哪怕只有一个字符) - 将鼠标移到选中区域内,按住左键拖动 —— 此时不要按
Alt,否则会切到列选择模式,拖不动 - 拖动过程中会出现蓝色插入线(
---),松手即完成剪切+粘贴式移动 - 该功能由设置项
editor.dragAndDrop控制,默认为true;关掉后连选中拖拽也失效
Ctrl/Cmd + 拖动才是“复制式拖拽”,Alt 不参与
很多人以为 Alt 是复制拖拽的修饰键,实际是平台差异下的误传:
- Windows/Linux:按住
Ctrl再拖动已选中文本 → 复制(原内容保留) - macOS:按住
Option(不是Alt,虽然键盘上常标为 Alt)再拖动 → 复制 -
Alt键在 Windows/Linux 上几乎不参与任何拖拽逻辑,强行按住只会干扰操作,甚至意外触发列选择 - 注意:这种复制拖拽也不跨标签页,不能从 .ts 文件拖进 .json 文件
容易被忽略的细节:拖拽只响应“已选中”,不响应行号/空白处
新手常卡在这一步,反复尝试却没反应:
- 不能直接拖行号栏(gutter),也不能拖左侧空白处(即使光标在那行)
- 不能拖未选中的整行 —— VSCode 不支持“悬停即拖”,必须有明确选区
- 如果拖拽无效,先检查
editor.dragAndDrop是否为true,再确认是否真选中了内容(看是否有高亮底色) - 终端(
Ctrl+`)里拖拽完全不可用,那是 shell 的上下文,VSCode 不接管


















