ctrl+shift+f(或cmd+shift+f)是sublime text跨文件查找替换的唯一入口;where填“.”才表示整个项目,排除目录用“-node_modules/”,正则替换用$1而非,replace all前必须git commit并save all。

Ctrl+Shift+F 是唯一入口,不是 Ctrl+F 或 Ctrl+H
跨文件查找替换在 Sublime Text 里压根不走 Ctrl+F 或 Ctrl+H——那俩只作用于当前标签页。按了没反应?八成是卡在这一步。
-
Ctrl+Shift+F(Windows/Linux)或Cmd+Shift+F(macOS)才是全局搜索的唯一入口,面板名叫“Find in Files” - 没通过
File → Open Folder…加载项目根目录,Where字段会灰显或只显示Open Files,搜不到任何子目录内容 - 右下角状态栏出现类似
~/my-project/的路径,才算真正进入项目模式
Where 字段填 “.” 才代表整个项目,留空 ≠ 全项目
很多人填空就点 Replace All,结果只改了几个已打开的文件,还以为功能失效了——其实 Where 留空等价于“只搜当前已打开的标签页”,不是你想要的“整个项目”。
- 真正表示整个项目的写法是单个英文点:
.(不是./,也不是./src) - 要排除
node_modules和dist?写成:., -node_modules/, -dist/, -*.min.js(注意统一用正斜杠/,Windows 上也一样) - 只改 TypeScript 业务代码?用:
./src/**/*.ts, ./tests/**/*.ts,逗号分隔,精准锁定范围
正则替换用 $1,不是 ;点号 . 默认不匹配换行
Sublime 的正则引擎是 PCRE 风格,但替换语法是自研的:捕获组必须用 $1、$2 引用, 会直接当字面量处理;而且 . 默认不匹配换行符,跨行匹配要加 (?s) 前缀。
- 把
getUser(id)改成getUser({ id }):
查找:getUser$$([^)]+)$$(括号需转义)
替换:getUser({ $1 }) - 删掉独立的
console.log行(不碰字符串或注释里的):
查找:^[ ]*console.log$$[^)]*$$;[ ]*$
替换:留空,或填// $0转为注释 - 双引号字符串变单引号:
"([^"]*)"→'$1';但若含转义引号(如"He said "hi""),得升级为"((?:[^"\]|\.)*)"
Replace All 不可撤销,Git commit + Save All 是铁律
点了 Replace All 后所有改动都在内存里,没保存就是脏状态;关掉未保存的标签页,修改直接丢弃——Sublime 没有跨文件的撤销历史。
- 替换前务必执行:
git add -A && git commit -m "before global replace",出错时git checkout .三秒回滚 - 替换后必须手动保存:按
Ctrl+K松开,再按Ctrl+B(即“全部保存”快捷键),别依赖标签页右上角的星号* -
file_exclude_patterns设置可能让.log或.tmp文件被跳过,搜不到不一定是没匹配,可能是被过滤了
Where 没锁死、git commit 没做、Save All 忘按。











