ctrl+alt+g(windows/linux)或 ctrl+cmd+g(macos)才是真正的全量多光标选择;它基于当前选区全文正则匹配并为每个匹配创建光标,而ctrl+d仅逐次添加下一个精确匹配项,受大小写、边界等限制。

Sublime Text 怎么一次性选中所有相同文本
直接按 Ctrl+D(Windows/Linux)或 Cmd+D(macOS)反复操作,能逐个扩展选中当前光标所在词的下一个匹配项;但真要「全选所有相同内容」,得用 Ctrl+Cmd+G(macOS)或 Ctrl+Alt+G(Windows/Linux)。这个快捷键才是真正的“全量多光标选择”,不是靠连按模拟出来的。
为什么 Ctrl+D 不是真正“全选相同内容”
Ctrl+D 是“逐次添加匹配项”,它只找**当前已选中内容的下一个精确匹配**,且受大小写、空格、单词边界影响。比如你选中了 user,它不会选中 username 里的 user,也不会跳过注释或字符串——它只认光标位置的原始文本,不走正则,也不全局扫描。
- 常见错误现象:按到一半发现漏了某处,其实是那个位置被前面的引号/括号/注释挡住了,
Ctrl+D默认跳过非代码区域 - 使用场景:适合小范围精调,比如改几个变量名,但不适合重构级批量操作
- 性能影响:对超大文件(>10MB)反复按
Ctrl+D可能卡顿,因为每次都在实时查找下一个
Ctrl+Alt+G 的实际行为和限制
这个命令本质是“基于当前选区,执行一次全文本正则匹配,并为每个匹配创建光标”。它比 Ctrl+D 更暴力也更可靠,但有几个关键前提:
- 必须先手动选中一段文本(哪怕只有一个字符),不能空着光标直接按
- 默认区分大小写;如果想忽略大小写,得先打开大小写开关(
Ctrl+Alt+U切换) - 不自动跨行匹配换行符;如果选中的是带换行的块,它只匹配完全相同的块(含换行)
- 正则元字符如
.、*、^会被当作字面量处理,除非你提前开启正则模式(Alt+R)
替换时怎么避免误伤注释和字符串
Sublime 没有内置“仅代码区匹配”选项,但可以靠作用域临时规避。比如你想改所有 data 变量,但不想动 JSON 字符串里的 "data":
- 先用
Ctrl+Shift+P调出命令面板,输入Find in Files看下匹配分布,确认是否真在字符串里 - 更稳妥的做法:把光标放在一个干净的
data上(比如函数参数),按Ctrl+Alt+G,然后立刻按Ctrl+Shift+L把多光标转成多行编辑,再手动删掉明显在引号内的光标(用方向键+Esc退出单个光标) - 如果高频操作,建议存个正则片段:
\bdata\b(?![\'\"]),配合Alt+R+Ctrl+Alt+G使用,但要注意\b在 Sublime 里对 Unicode 支持有限
最常被忽略的一点:Sublime 的“全选相同”永远基于当前视图内容,不会跨文件生效——哪怕你开了多个标签页,Ctrl+Alt+G 也只扫当前文件。需要批量改多个文件,得用 Find in Files 配合 Replace All。










