Sublime Text全局查找替换必须用Ctrl+Shift+F(macOS为Cmd+Shift+F)调出“Find in Files”面板,Where填“.”才表示真全局,正则替换用\1而非$1;否则仅作用于当前文件、范围错误或捕获组失效。

Sublime Text 里“快捷查找替换”不是指按一次键就完事,而是指用对组合键 + 填对关键字段,避免点错面板、搜错范围、替错内容。核心就三点:别用 Ctrl+F 或 Ctrl+H 做跨文件操作;Where 字段必须显式填 . 才算真全局;正则替换时必须用 \1,不是 $1。
为什么 Ctrl+Shift+F 是唯一入口,而不是 Ctrl+H?
Ctrl+H 只作用于当前打开的单个文件,哪怕你开了 50 个标签页,它也只改光标所在的那个。想改整个项目,必须用 Ctrl+Shift+F(macOS 是 Cmd+Shift+F)调出 “Find in Files” 面板。常见错误是按了 Ctrl+H 后在 Replace All 里狂点,结果只改了当前文件——面板右下角状态栏没显示项目路径(如 ~/my-project/),说明根本没进项目模式。
Where 字段填什么才真正搜整个项目?
留空 ≠ 全项目,它等价于“只搜当前已打开的文件”。真正表示整个项目的写法是单个英文点:.(不是 ./,也不是 ./src)。需要排除目录时,用逗号分隔加减号前缀:., -node_modules/, -dist/, -*.min.js。注意:Windows 上也必须用正斜杠 /,写成 \node_modules\ 会失效。
正则替换时捕获组怎么引用?
Sublime 的正则替换不支持 $1,只认 \1。比如把 fetch(url) 改成 fetch({ url }),查找填 fetch$$([^)]+)$$,替换必须填 fetch({ \1 })。如果写了 $1,替换结果会原样输出字符串 $1,不会解析。另外,. 默认不匹配换行符,跨行匹配得加 (?s) 前缀,例如 (?s)start(.*?)end。
Replace All 前必须确认的三件事
点 Replace All 前务必检查:
• 是否已执行 git commit -m "before global replace" —— Sublime 没跨文件撤销,回滚只能靠 Git
• 是否点了 Find 预览过结果,右下角显示命中数是否合理(上千处要警惕)
• 是否手动按了 Ctrl+K 再按 Ctrl+B 保存全部更改 —— 替换后只是内存修改,关掉未保存标签页就丢数据











