sublime中“全选所有匹配项”需先搜索再执行,无真正一键触发;光标停在单词上按alt+f3可直接全选该词所有出现位置,正则匹配须注意边界、贪婪及分组捕获。

全选所有匹配项不是“一键触发”,而是“先搜再选”
Sublime 里没有真正意义上的“一键全选所有匹配项”——你必须先让编辑器知道你要找什么,它才肯帮你全选。很多人按 Ctrl+Alt+G(Windows/Linux)或 Ctrl+Cmd+G(macOS)没反应,不是快捷键失效,是漏掉了前置动作。
- 打开查找面板:
Ctrl+F(Win/Linux)或Cmd+F(macOS) - 输入要匹配的文本或正则,比如
\bconsole\.log\b - 点击右上角
.*按钮启用正则模式(若需正则);点击\b启用全词匹配(若只需整词) - 点 Find All 或按
Enter—— 此时只是高亮+跳转,还没选中 - 最后按
Ctrl+Alt+G或Ctrl+Cmd+G,所有匹配项才变成多光标可编辑状态
想全选当前单词?别输、别搜,直接按快捷键
如果目标就是把光标所在单词的所有出现位置一次性全选(比如重命名变量 user_id),根本不用开查找框。这是 Sublime 最被低估的“无脑高效操作”。
- 光标停在单词内部(比如
user_id的任意一个字母上),不选中、不复制、不输入 - Windows/Linux 直接按
Alt+F3;macOS 按Ctrl+Cmd+G - 它默认走全词匹配(
\buser_id\b效果),不会误中user_id_old或username - 如果已手动选中一段含空格或引号的内容(如
"status": "active"),再按Alt+F3,就会匹配该完整字符串 - 按了没反应?检查是否意外开启了
\b模式但目标词其实是子串——按Alt+W关掉全词匹配再试
正则全选失败,八成是边界或贪婪写错了
正则全选看起来“选了”,一改就乱,往往不是快捷键问题,而是正则本身没锚定清楚。Sublime 不会提醒你正则逻辑错,只会安静地给你一堆错误匹配。
- 想改所有
console.log却连带改了console.logError→ 补单词边界:\bconsole\.log\b - 用
"(.*)"提取引号内容,结果跨行或吞掉中间引号 → 改非贪婪:"(.*?)",并确认勾选了.匹配换行(面板右下角\n按钮) - 替换里用
$1却为空 → 检查分组是否捕获成功,比如(\w+)\.js$在main.min.js(末尾有空格)里就不匹配,去掉$或改成(\w+)\.js\s*$ -
Find All后按Ctrl+Alt+G仍只选中部分?可能是正则未开启,或Find All没真正执行(只点了输入框回车,没点按钮或没按Alt+Enter)
批量修改前,三件事不确认,等于没备份
Sublime 不自动保存修改历史,Ctrl+Z 撤销链还可能被大文件或插件清空。所谓“批量高效”,前提是“敢改”。
- 先按
Ctrl+Z测试能否撤回——尤其在装了某些插件或打开超大日志文件时 - 看查找面板右下角显示的
X matches:数字异常大(比如 >500)必须警觉,点开前两三个匹配位置,确认是否真在目标上下文中 - 开启
Highlight matches(灯泡图标),扫一眼高亮:是否误中了字符串里的路径、注释里的伪代码、JS 正则字面量中的/pattern/?
最常被忽略的是:正则匹配和实际语义之间存在鸿沟。它不管你是变量、字符串还是注释,只认字符。所以“全选所有 id”这种需求,永远要先问一句:你真的要改 HTML 属性、CSS 类名、JS 变量、JSON 键名,还是全部?











