Alt+点击是插入多光标而非跳转,Windows/Linux通用,macOS默认Option+点击;Alt+Shift+拖拽实现列选择;Ctrl+Alt+↑/↓在上下行同列加光标;删字符时各光标独立操作。

Alt + 点击不是跳转,是加光标
很多人按住 Alt 点击函数名,发现没跳转到定义——那是因为你可能启用了自定义键位,或当前文件没语言服务支持。但真正高频、零学习成本的用途,其实是插入多个编辑光标:Alt + 鼠标左键点击任意位置,就加一个光标;连续点三处,就有三个光标同步响应输入。
常见错误现象:点了没反应 → 检查是否在终端/调试控制台等非编辑器区域;点了光标不联动 → 确认没误触 Ctrl 或 Shift 键(多光标只响应纯 Alt + 点击)。
- 适合场景:对齐赋值语句、批量补引号、给 JSON key 加前缀、在多行末尾同时加逗号
- 和
Ctrl + D的区别:Ctrl + D依赖文本匹配,Alt + 点击完全手动可控,不怕误选 - Windows/Linux 通用;macOS 默认是
Option + 点击,可在settings.json中设"editor.multiCursorModifier": "ctrlCmd"改成Ctrl
列选择模式:Alt + Shift + 拖拽比正则还快
当你需要在多行同一列位置插入内容(比如统一在每行开头加 // ),别去写正则。按住 Alt + Shift,鼠标从上往下拖出一个竖直矩形框,松手即生成一列光标。
性能影响几乎为零,但容易踩的坑是:拖拽起始点若落在缩进空格区,光标会卡在空格中间,导致后续输入错位。建议先用 Ctrl + I(选中当前行)再按 Shift + Alt + I,直接在行尾加光标更稳。
- 适用场景:补全数组字段、构造 SQL INSERT 多行值、批量修改 CSV 列
- 路径类操作慎用:如果某行特别短,列选择会“悬空”,光标落在不存在的位置,输入时该行无响应
- 退出方式只有两个:
Esc或任意一次鼠标单击(不是Alt + 点击)
Alt + Ctrl + ↑/↓ 是“自动上下行光标”的快捷入口
想在当前行和它上面/下面几行同时编辑?不用手点,Ctrl + Alt + ↑ 会在上一行同列位置加一个光标,Ctrl + Alt + ↓ 同理向下。比反复 Alt + 点击 更快,尤其当目标行距较远时。
这个组合键的兼容性很好,但要注意:如果当前行有折叠(比如函数体被折叠),光标会加在折叠行的首行,而不是展开后的真实位置。重构前建议先展开相关区域。
- 参数差异:
Ctrl + Alt + ↓不会跨文件生效,只作用于当前打开的编辑器 - 和
Shift + Alt + I的区别:后者只在已选中文本的每行末尾加光标,前者可精准定位列位置 - 删除光标堆栈用
Ctrl + U,别手抖按成Ctrl + Z回退整段输入
多光标编辑时删字符的行为很反直觉
多个光标并存时按 Delete 或 Backspace,不是删“所有光标后的字符”,而是每个光标各自删自己前面/后面的**一个字符**。这意味着:如果光标有的在词首、有的在词中,删完后各行长度可能不一致,甚至出现语法错误。
最容易被忽略的地方是:光标堆栈里混入了空行或注释行,删操作会静默跳过这些位置,但你根本看不到提示。结果就是改了 5 行,只生效了 3 行,还找不到原因。
- 安全做法:批量删之前,先用
Ctrl + Shift + L全选目标词,再删;或者删完立刻按Ctrl + Z撤回,换用剪切Ctrl + X(无选中时=剪整行)更可控 - 性能提示:光标数超过 20 个时,VSCode 输入响应会有轻微延迟,建议分批操作
- 别依赖“撤销”恢复全部状态:多光标下的撤销粒度是“每次键盘事件”,不是“每次光标操作”


















