VSCode中Alt+↑/↓是移动整行而非复制,真正整行复制需用Shift+Alt+↑/↓(Windows/Linux)或Shift+Option+↑/↓(macOS),该操作不依赖选中与剪贴板,原行保留且含完整缩进与换行符。

VSCode里按Alt+↑/↓是移动行,不是复制
很多人搜“Alt键快速生成副本”,一上来就按 Alt+↑ 或 Alt+↓,结果发现原行不见了——那是移动,不是复制。VSCode 中,Alt+↑ 触发的是 editor.action.moveLinesUpAction,Alt+↓ 是 editor.action.moveLinesDownAction,本质是剪切+粘贴,原位置清空。真要留原样、加副本,必须用带 Shift 的组合。
真正起作用的是 Shift+Alt+↑/↓(Windows/Linux)或 Shift+Option+↑/↓(macOS)
这是 VSCode 官方默认绑定的整行克隆快捷键,对应命令分别是 editor.action.copyLinesUpAction 和 editor.action.copyLinesDownAction。它不依赖剪贴板、不需预选中、光标停在行中任意位置(哪怕在字符串第 5 个字符)都有效。
- 未选中文本时:复制整行(含缩进、空格、换行符),原行不动,新行插入到上方或下方
- 已选中文本时:退化为「复制选区」,不是整行——这是最常误判的点
- 选中连续多行后按该快捷键:整个选区被整体复制,不是只复制光标所在行
- macOS 用户注意:
Shift+Option+↑/↓常被系统「显示桌面」功能拦截,需进「系统偏好设置 → 键盘 → 快捷键 → Mission Control」禁用Option+↑和Option+↓
为什么 Ctrl+Shift+Alt+↓ 不推荐
网上有些教程还在推 Ctrl+Shift+Alt+↓,但它不是当前 VSCode(1.90+)的默认绑定,而是旧版遗留配置。实际使用中容易出问题:
- 在部分键盘布局或远程桌面(如 ToDesk、AnyDesk)下会被劫持,根本收不到事件
- 和多光标操作(如
Ctrl+D)逻辑冲突,尤其在连按场景下行为不稳定 - macOS 上对应
Cmd+Shift+Option+↓,四键组合难按且易触发系统快捷键 - 如果你在
keybindings.json里手动绑定了它,建议统一换成更轻量的Shift+Alt+↓
复制后格式错乱?先关掉 editor.formatOnPaste
你复制完发现新行缩进跑偏、括号换行异常,大概率是开启了 "editor.formatOnPaste": true。Prettier 或 ESLint 会在粘贴瞬间自动重排,把刚克隆的副本“改得面目全非”。
- 临时解决:在设置里搜
format on paste,关掉它;操作完再开回来 - 长期建议:搭配
"files.trimTrailingWhitespace": true,避免复制带空格的行,减少 Git diff 噪音 - 空行、折叠区域、BOM 字符都照常复制——但这些边界情况容易暴露格式化插件的副作用,别误以为是快捷键本身的问题
真正容易被忽略的是:这个操作对「空行」也生效,且复制后光标默认落在新行行首;如果你习惯靠行号定位,可能第一眼没注意到新行已插入成功。











