sublime text全局搜索必须满足项目已加载、where路径正确、正则开关启用三项条件,否则ctrl+shift+f灰显或无效;需file→open folder加载根目录,where填“.”搜全项目,正则替换用$1且需点蓝.*图标,替换后须手动save all。

Sublime Text 全局搜索不是“输完回车就出结果”的功能,它必须满足项目已加载、Where 路径写对、正则开关点蓝这三项硬条件,缺一不可;否则 Ctrl+Shift+F 要么灰显,要么搜不到、改不掉。
Ctrl+Shift+F 灰显或无反应?你根本没进项目模式
快捷键失效的根源几乎全是项目未正确加载。单文件打开、拖文件进窗口、甚至用 Add Folder to Project 添加路径,都不等于进入项目模式。
- 看左下角状态栏:必须显示类似
~/my-project/的路径,没有 → 还没进项目模式 - 看侧边栏:必须有完整树形目录结构,只有标签页列表 ≠ 项目已加载
- 正确做法是:关掉所有标签页,用
File → Open Folder…选中项目根目录(比如src上一级),等右下角Indexing…消失再操作 - Mac 用户注意:
Cmd+Shift+F常被系统 Spotlight 占用,需在「系统设置 → 键盘 → 快捷键 → Spotlight」里禁用
Where 输入框填什么才真正生效?不是 glob,也不是正则
Where 是路径前缀匹配器,不是 shell 通配,也不等价于正则(除非你点了 .* 图标)。填错一个字符,搜的就是错的地方。
- 搜整个项目:填
.(单个英文点),不是./,也不是留空 - 只搜
src/下所有文件(含子目录):填src/,自动递归,不用写src/**/* - 限定类型 + 排除干扰:填
src/**/*.js, -node_modules/, -dist/(逗号分隔,-开头表示排除) - 只搜已打开但未保存的标签页:必须手动填
open_files,这是唯一可靠方式 - 别写
/src/或./src/—— Windows 下斜杠异常,/开头会被当字面量处理
正则替换为什么 $1 不生效?三个开关要分别确认
查找和替换面板的正则开关是独立的,.* 图标必须为蓝色才真正启用;否则 $1 就是字面字符串,括号、点号也不会被转义。
- 查找框里写
console\.log\(.*?\),但.*图标没点蓝 → 只当普通字符串匹配,找不到任何console.log() - 替换框里写
$1,但替换面板的.*图标是灰色 → 输出原样$1,不是捕获内容 - 跨行匹配必须加
(?s)前缀,例如(?s)"content": "(.*?)";否则foo.*bar永远找不到foo\nbar - 删空行别用
^\s*$——\s在 Sublime 里会匹配换行符,可能破坏文件末尾结构;改用^[ \t]*$
Replace All in Files 改完就丢?这不是 Bug,是设计
所有替换结果都存在内存里,不触发修改标记,也不自动保存。关掉面板、切走窗口、甚至意外崩溃,都会清空全部更改,且无任何提示或撤销历史。
- 替换后必须手动执行
File → Save All,或快捷键:Ctrl+K松开 → 再按Ctrl+B(macOS 是Cmd+K→Cmd+B) -
Ctrl+S只保存当前激活标签页,对批量替换无效 - 务必先点
Find All,确认结果面板列出了全部目标条目,再点Replace All—— 这三秒预览,比写错正则后git revert快得多











