Ctrl+Shift+F(Windows/Linux)或Cmd+Shift+F(macOS)才是全局替换快捷键;Ctrl+H仅作用于当前文件,且Replace All需先执行Find预览,范围需明确指定并排除node_modules等目录,正则需注意换行、非贪婪及捕获组语法,替换后须及时保存。

全局替换不是 Ctrl+H,而是 Ctrl+Shift+F
很多人误以为 Ctrl+H(当前文件替换)能跨文件生效,结果点了 Replace All 却只改了当前标签页——这是最常踩的坑。真正作用于整个项目或文件夹的,只有 Ctrl+Shift+F(Windows/Linux)或 Cmd+Shift+F(macOS)调出的“Find in Files”面板。
-
Ctrl+H只在当前打开的文件里查找替换,哪怕你开了 20 个文件,它也只动当前激活的那个 -
Ctrl+Shift+F的默认范围是当前打开的文件夹(即项目根目录),无需手动填路径,但Where框留空时≠搜全部已打开文件,而是搜该目录下所有可读文件 - 如果项目是通过
Project → Open Project加载的,Where: .就能覆盖整个 project;否则依赖实际文件系统结构
Replace All 不是“点一下就完事”,必须先 Find 再替换
Sublime 的 Replace All 按钮是灰的、点不动,或者点了没反应?大概率是因为你跳过了 Find 这一步。这个设计是强制预览机制:不扫描出匹配项,就不允许执行替换。
- 先填好
Find和Replace,在Where里写./src或*.js锁定范围,再点Find - 下方会弹出结果面板,列出每个匹配的
文件名:行号,点击可直接跳转,人工核对是否该改 - 正则替换时,务必勾选左下角的
.*图标,且注意转义:console\.log中的点要加反斜杠,否则会匹配任意字符
Replace All 不可撤回,关键操作前必须设防
Replace All 是真·全局写入,不会进撤销栈,Ctrl+Z 对已关闭的文件完全无效,对未保存的文件也只能恢复到上次保存状态。
- 别用
Where: .直接扫整个项目——node_modules/、dist/、build/都会被改,建议显式排除:!node_modules/, !dist/ - 批量改配置或变量名时,优先用
Replace(逐个点)而不是Replace All,尤其当捕获组含$1、$0时,上下文稍有偏差就可能错乱 - 替换完立刻按
Ctrl+K然后Ctrl+B(Save All),否则带星号(*)的标签页一旦关掉,修改就永久丢失
正则替换常见失效原因:换行、贪婪与引号处理
想把多行 JSON 字符串里的双引号全换成单引号,或者给所有 console.log() 补参数,结果只改了第一行或漏掉嵌套内容?多半是正则写法没适配 Sublime 的引擎特性。
- 换行符在正则中直接写
\n,不是\\n;开启.*后,.默认不匹配换行,需用(?s)开启单行模式:(?s)"([^"]*)" - 非贪婪匹配写成
(.*?),不是(.*),否则会从第一个引号一路吃到文件末尾最后一个引号 - 替换字段里引用捕获组用
$1,不是\1;整个匹配用$0,比如把数字前加前缀:Find: \d+,Replace: id_$0
Where 范围写错、正则没测试、替换后忘了保存——这些环节一松懈,几秒的操作就能变成半小时救火。










