ctrl+shift+f 失效是因为 sublime 未进入项目上下文,需通过 file → open folder… 打开项目根目录使侧边栏显示树形结构;where 字段填 . 才搜整个项目,正则需点开 .* 图标、注意 $1 引用及跨行匹配前缀 (?s),replace all 后需手动保存。

Ctrl+Shift+F 为什么点不动或搜不到文件?
根本不是权限或软件问题,而是 Sublime 压根没进入项目上下文。单文件打开时,Ctrl+Shift+F 面板会灰显,或者只显示 “Open Files”,Replace All 按钮不可用——这说明它连搜的范围都没定义好。
- 看左下角状态栏:是否显示类似
~/my-project/的路径?没有就不是项目模式 - 关掉所有单文件标签页,用
File → Open Folder…重新选中项目根目录 - 侧边栏出现完整树形结构,才是生效标志;
Add Folder to Project容易叠加路径,别用 - Mac 用户注意:
Cmd+Shift+F常被系统 Spotlight 占用,需在「系统设置 → 键盘 → 快捷键」里禁用 - 插件也可能劫持快捷键:打开
Preferences → Key Bindings – User,搜"ctrl+shift+f",删掉冲突项
Where 字段填什么才真正搜整个项目?
Where 不是 shell 路径,也不是补全框,它是 Sublime 自定义的前缀匹配器。填错一个字符,90% 的文件就漏掉了。
- 搜整个项目:必须填单个英文点
.(不是./,也不是留空) - 只搜
src/下所有.ts文件:src/**/*.ts(双星号**才递归子目录) - 排除干扰目录:
., -node_modules/, -dist/, -build/(逗号分隔,减号开头,斜杠统一用/) - 限定多类型:
src/**/*.ts, tests/**/*.ts(不支持*.+(ts|tsx)这类语法) - Linux/macOS 路径大小写敏感:
./SRC和./src是两个目录
正则替换总出错?盯住 .* 图标、$1 和换行
Sublime 的正则开关是面板级独立的:Find 和 Replace 两处的 .* 图标必须各自点开。灰色 = 关闭,蓝色 = 生效。没点开, 就是字面量,console\.log$$[^)]+$$ 也当普通字符串匹配。
-
.默认不匹配换行符:foo.*bar找不到foo\nbar;真要跨行,必须加(?s)前缀:(?s)foo.*bar - 捕获组引用只能用
$1、$2,不能用\1;例如把getUser(id)改成getUser({ id }),查找填getUser$$([^)]+)$$,替换填getUser({ $1 }) - 删独立
console.log行:查找填^[ \t]*console\.log$$[^)]*$$;[ \t]*$,替换留空(注意.和$要转义) - 单词边界
\b对下划线不敏感:\buser_id\b仍会匹配username;更稳写法:(?
Replace All 后文件没变星号?这不是 Bug
点了 Replace All in Files,所有改动都只是内存中的脏状态。关掉未保存的标签页,修改直接丢弃。Sublime 从不自动落盘,也没有跨文件撤销历史。
- 替换前务必执行:
git add -A && git commit -m "before global replace" - 替换后立刻按
Ctrl+K松开,再按Ctrl+B(Windows/Linux);macOS 是Cmd+K → Cmd+B - 大项目记得关
"index_files": false,否则搜索卡死或漏文件;关了还得清缓存目录 - 非 UTF-8 编码文件(如 GBK)默认被跳过,右下角看编码,点开转成 UTF-8 再操作
真正麻烦的从来不是正则怎么写,而是你有没有三秒时间看一眼 .* 图标颜色、扫一遍 Where 路径、点一下 Find All 预览——这三步跳过,后面 git revert 的时间够重写两遍逻辑。











