Sublime Text多光标核心是“选中→扩展→再扩展”:先选中目标词,再反复按Ctrl+D(Win/Linux)或Cmd+D(macOS)逐个添加匹配项;Ctrl+Shift+G可一键选中全部,Ctrl+U撤销上步,Esc清除多余光标。

多光标怎么触发——别乱按 Ctrl+D 了
Sublime Text 的多光标不是靠“按住 Ctrl 一直点”实现的,核心是「选中→扩展→再扩展」的节奏。最稳的方式是先用鼠标或键盘选中第一个目标文本,然后反复按 Ctrl+D(Windows/Linux)或 Cmd+D(macOS)逐个添加下一个相同内容的匹配项。它只匹配当前光标所在词的**完全一致的字符串**,大小写和空格都算在内。
常见错误现象:Ctrl+D 按了没反应?可能你没先选中任何东西;按一次就跳到下一行开头?说明当前光标没落在可识别的单词上(比如在行首空白处)。建议始终从明确的关键词开始,比如想改所有 user_id,就先把光标放在其中一个 user_id 上并双击选中它。
- 想一次性选中全部匹配项:用
Ctrl+Shift+G(macOS 是Cmd+Shift+G),比连按Ctrl+D更快也更可靠 - 误选了不该改的项?按
Ctrl+U可以撤销上一次添加的光标(即“反向退一步”) - 选中后想扩大范围(比如从单词变成整行)?按
Ctrl+L直接选中当前行,所有光标都会同步执行
跨行、跨文件批量改——别手动切标签页
多光标默认只作用于当前视图(即当前打开的文件),但你可以用 Find → Find in Files…(快捷键 Ctrl+Shift+F)把搜索结果集中到一个面板里,再勾选 Replace 标签页,填入替换内容后点 Replace All —— 这本质是正则批量操作,不依赖光标,但效果等价且更安全。
如果坚持用多光标跨文件:必须先用 Ctrl+P 打开多个文件,再用 Ctrl+Tab 切换到目标文件,用 Ctrl+Shift+G 选中全部匹配项,然后 Ctrl+Enter 在所有已打开的标签页中同步执行编辑。注意:未保存的文件不会被纳入,关闭的文件也不会自动打开。
- 跨文件多光标只对「已打开且未关闭」的标签页生效,关掉一个就少一个
-
Find in Files的Where输入框支持路径通配,比如src/**/*.js,比手动开文件靠谱得多 - 替换前务必点
Find All看一眼命中的位置数量,避免正则写错导致误改
正则 + 多光标——真正处理复杂模式
纯字符串匹配不够用时(比如要改所有 id="xxx" 里的 xxx),得先用正则选中。打开 Find → Find…(Ctrl+F),勾上 .*(正则模式),输入 id="([^"]*)",点 Find All。这时所有匹配区域会高亮,再按 Alt+Enter(Windows/Linux)或 Cmd+Ctrl+G(macOS)把高亮转为多光标——光标会精准落在捕获组 $1 的位置,也就是引号内的内容。
这个技巧的关键在于:正则负责“定位”,Alt+Enter 负责“转化”,二者缺一不可。直接在普通编辑区按 Ctrl+D 是无法响应正则逻辑的。
- 捕获组外的内容(比如
id="和")不会被光标覆盖,改的时候不会动它们 - 如果正则没写对,
Find All不出结果,Alt+Enter就没意义 - 常用正则速查:
\d+匹配数字,\w+匹配字母数字下划线,^.*$匹配整行(需开启^$表示行首行尾)
改完发现漏了或错了——撤销比重做更关键
多光标编辑一旦触发,Sublime 默认把整个操作记为一次 undo 步骤(哪怕你改了 200 行),所以按 Ctrl+Z 是能一步撤回全部的。但前提是:你没在中间插入过其他无关操作(比如切换窗口、打字、保存)。一旦混入其他动作,undo 链就断了。
真正容易被忽略的是「光标残留」:改完后看似结束了,但其实还有隐藏光标停在某行末尾,下次输字符会同时出现在所有残留位置。肉眼很难察觉,尤其当文件很长时。最简单的检查方式是按一下方向键——如果有多个位置同步响应,说明还有多光标活着。
- 强制清除所有额外光标:按
Esc,它会把所有光标收束成一个主光标 - 不想全撤,只想删某几个光标?用鼠标点击任意一个光标位置即可取消其余所有(保留点击处的单光标)
- 频繁多光标操作前,建议先
Ctrl+Shift+P输入Settings – User,确认"drag_text": false已设为false,否则拖选时容易意外触发多光标

















