多光标编辑有四种方式:1. Alt/Option垂直拖选,适用于对齐行;2. Ctrl+D逐个扩展相同词;3. 正则替换(Ctrl+H+. *)处理规律性结构;4. Ctrl+Alt+↑/↓添加上下行光标。

多光标编辑:按住 Alt(Windows/Linux)或 Option(macOS)拖选
这是最直接改多行重复内容的方式,适合已知要改的行数固定、位置对齐的情况。比如修改一组变量名、日志前缀、或 JSON 字段值。
常见错误现象:鼠标拖动没反应 或只选中一行——大概率是没按住 Alt/Option,或者开启了“列选择模式”但误触了其他快捷键。
- Windows/Linux:按住
Alt,再用鼠标左键从上到下垂直拖拽 - macOS:按住
Option,同样垂直拖拽 - 如果行首/行尾不齐,先用
Ctrl+Shift+L(macOS 是Cmd+Shift+L)把光标放到所有匹配行的相同位置(比如都放在等号右边),再输入
Ctrl+D 逐个扩展选中相同词
适合改散落在不同行、但内容完全一致的关键词,比如统一替换 user_id 为 userId,且你不想全局替换(怕误伤注释或字符串里同名字段)。
使用场景:代码重构初期试探性修改,或只想改当前文件里可见的几处。
- 把光标放在第一个
user_id上,按一次Ctrl+D选中它;再按一次,VS Code 自动找下一个相同词并加入选区 - 按
Ctrl+K Ctrl+D可跳过当前匹配项(比如中间有个不该改的user_id字符串) - 注意:默认只匹配完整单词;若想连带改
user_id_map这类,需先关掉editor.matchWholeWord配置,或手动开启“大小写敏感”和“全字匹配”开关(右下角放大镜图标旁)
正则替换:用 Ctrl+H + 启用 .* 按钮
当重复结构有规律但不完全相同,比如每行都是 console.log("xxx");,你想批量改成 debug("xxx");,就得靠正则。
容易踩的坑:.* 默认是贪婪匹配,console.log\("(.*)"\); 在有多行日志时可能跨行吞掉中间内容;还有括号、点号、反斜杠这些字符不转义就会失效。
- 打开替换面板后,点右上角
.*图标启用正则模式 - 查找框填:
console\.log\("(.*)"\);(注意.和()要转义) - 替换框填:
debug("$1");($1表示第一个捕获组) - 如果涉及换行,勾选
\n按钮(或写[\s\S]*代替.*)
多行同时输入:用 Ctrl+Alt+↑/↓ 添加上下行光标
适合在已有代码块上方/下方统一加注释、空行、或导入语句,比如给一组函数都补上 // TODO:。
性能影响小,但容易手滑按太多次,导致光标跑到文件头尾去。一旦错位,按 Esc 能快速退出多光标状态。
- 把光标停在某一行,按
Ctrl+Alt+↓(Windows/Linux)或Cmd+Option+↓(macOS),会在下一行同一列加新光标 - 连续按多次,就能叠出多个光标;支持反向按
↑ - 如果列位置不对(比如有的行缩进深、有的浅),先用
Home或End对齐光标列,再加
Backspace 把多行一起删了——这时候 Ctrl+Z 是唯一能救你的操作。










