vscode中复制当前行的正确快捷键是alt+shift+↓(windows/linux)或option+shift+↓(macos),而非alt+↓;后者用于移动行且不经过剪贴板。

Alt+Shift+↓ 复制当前行,不是 Alt+↓
VSCode 里用 Alt 键复制行,真正起作用的是 Alt+Shift+↓(Windows/Linux)或 Option+Shift+↓(macOS),不是单独按 Alt+↓——后者是移动行,会把原行剪切走。很多人试了没反应,其实是按错了组合键。
常见错误现象:Alt+Shift+↓ 按了没反应,大概率是中文输入法劫持(比如搜狗把 Alt+Shift 绑定为中英文切换),或者焦点不在编辑器内(比如光标停在终端面板)。切到英文输入法、点一下代码区空白处再试。
实操要点:
- 光标停在任意位置(哪怕在字符串中间),只要没选中文本,
Alt+Shift+↓就复制整行(含缩进、换行符)到下方 - 如果已选中几行,它复制的是选区,不是“当前行”——这是最常踩的坑
- 复制后光标自动落到新行开头,不是原列位置;若想保持列对齐,得手动调整
- 折叠函数体内的行也能复制,但复制的是源码,不是折叠后显示的那行文本
Alt+↓ 移动行时,原内容不进剪贴板
Alt+↓(Windows/Linux)或 Option+↓(macOS)是移动整行,不是复制。它内部执行的是“剪切 + 粘贴”,但**不经过系统剪贴板**——你之后按 Ctrl+V 粘贴出来的,还是上一次手动复制的内容,不是刚移走的那行。
这个设计有利有弊:避免干扰剪贴板历史,但如果你误拖后想撤回,不能靠 Ctrl+V 拿回来,得立刻按 Ctrl+Z。
使用场景:
- 跨屏整理代码块:比如把文件顶部的 import 块拖到中间,比先
Ctrl+X再滚屏找位置快 - 临时调整 if/else 分支顺序,改完发现不合适,
Ctrl+Z一步还原 - 多行选中后一起移动:用
Shift+↓选中 5 行,再按Alt+↓,整块下移,空行和缩进全保留
拖拽文本 ≠ 快捷键,行为逻辑完全不同
VSCode 编辑器内鼠标拖拽选中文本后直接拖动,本质是“剪切 + 粘贴”,和 Alt+↓ 行移动一样不走剪贴板;但加 Alt(Windows/Linux)或 Option(macOS)才是复制——这点和大多数编辑器相反,且官方文档没明说。
容易混淆的点:
- 拖拽只对编辑器内文本有效;拖文件到编辑器区域插入路径,受同一个配置项
editor.dragAndDrop控制,关掉它,拖文件就变成系统级打开,而不是插路径 - 想在 Markdown 里保留拖入路径功能,其他语言禁用?只能靠语言专属配置:
"[markdown]": { "editor.dragAndDrop": true },还得显式关闭其他语言 - 拖拽过程中编辑器会自动滚动,但目标位置必须在可视范围内松手,否则可能粘贴到错行
快捷键失效时,别急着重装,先查这三处
多数“Alt 键没反应”问题,跟 VSCode 本身无关。优先排查以下三项:
- 右下角状态栏是否显示「Chinese (Simplified)」?切英文输入法再试
- 窗口标题栏或焦点框是否在终端(
Ctrl+`打开的那个黑框)?点一下编辑器空白处再按 - 打开命令面板(
Ctrl+Shift+P),搜Preferences: Open Keyboard Shortcuts,输入copyLinesDownAction,看右侧是否标着「conflict」或被禁用
macOS 用户额外注意:系统默认用 Option+↑ 显示桌面,会拦截 VSCode 的 Option+Shift+↑,需进「系统偏好设置 → 键盘 → 快捷键 → Mission Control」里关掉。











