Sublime全局替换默认区分大小写,但常因误点Aa按钮关闭;需结合Whole Word(\b)、Where范围排除干扰目录及正则边界使用,否则易误替换。

区分大小写是默认开启的,但常被误关
Sublime 的全局替换(Ctrl+Shift+H 或 Cmd+Shift+H)默认就区分大小写,根本不用“开启”——真正的问题是很多人无意中点了那个 Aa 按钮把它关了。一旦关闭,user 会匹配 User、USER,甚至 username 里的子串,导致误替换。
- 检查面板右上角:看到
Aa是灰色(未高亮)?说明已关闭区分大小写;若为蓝色/高亮,则已启用 - 快捷键是
Alt+C(Win/Linux)或Cmd+C(macOS),按一下就能切回“敏感模式” - 正则替换中,即使勾选了
Regex,Aa状态依然独立生效——它不随正则开关自动联动
为什么整词匹配(Whole Word)比大小写更关键?
很多所谓“大小写问题”,其实根源在没开 Whole Word。比如想改 id 变量,却把 user_id、identity 全替了。这时大小写再准也没用。
-
Whole Word对应按钮是\b,快捷键Alt+W - 它等价于正则中的
\b边界断言,只匹配独立单词,不碰连字符、下划线或点号前后 - 组合使用最稳妥:
Aa+\b,例如把log替换为debug,就不会动到console.log()或logging
正则里大小写控制要小心\u和\U的范围
在替换框中用 \u 把捕获组首字母大写,很常用;但容易忽略它的作用域极小——只影响紧接其后的**一个字符**。
- 查:
([a-z])([a-z]+),替:\u$1\L$2→hello变成Hello(\L小写后续全部) - 错例:
\u$0想让整个匹配变大写?不行。\u只作用于 $0 后第一个字符,其余照旧 - 真要全大写,得用命令式转换:先
Find All选中所有匹配项,再按Ctrl+K→Ctrl+U批量转(多光标下每处独立生效)
项目替换前必须确认“Where”范围是否含干扰目录
你以为开了 Aa 就安全了?如果 Where 框里没排除 node_modules 或 dist,哪怕只改一个 React,也可能把第三方包里几百个 react 全扫进去——而它们大小写本来就不一致。
-
Where框支持取反语法:!node_modules,!dist,src/**/*.ts - 路径通配符优先级:逗号分隔是“或”,感叹号是“排除”,顺序无关,但建议排除项写前面
- 别信“当前项目”自动过滤——Sublime 不识别
package.json或.gitignore,一切靠你手动限定
Whole Word、Where 范围、正则边界一起失效。漏掉其中任意一环,批量替换就从提效变成救火。










