ctrl+shift+f灰显因未进项目模式:需file→open folder加载文件夹,mac用户还需禁用spotlight冲突;where填.搜全项目,src/.js,.ts搜指定目录,open_files搜已开标签页;正则需点蓝.*图标,用$1引用捕获组,跨行加(?s);替换后须ctrl+k ctrl+b保存,否则丢弃。

Ctrl+Shift+F 灰显或无反应?先确认是否进了项目模式
Sublime 的全局搜索功能根本不会启动,除非你通过 File → Open Folder… 加载了完整文件夹。单文件打开时,左下角状态栏不显示路径(如 ~/my-project/),侧边栏没树形结构,Ctrl+Shift+F 面板就一定是灰的、不可用的。
Mac 用户还要额外检查系统级冲突:Cmd+Shift+F 默认被 Spotlight 占用,需在「系统设置 → 键盘 → 快捷键 → Spotlight」中禁用。
- 临时验证方式:按
Ctrl+Shift+F后看面板里有没有Where输入框;没有,说明压根没进项目模式 - 插件劫持也很常见:打开
Preferences → Key Bindings – User,搜"ctrl+shift+f",删掉冲突项 - 别用
Add Folder to Project—— 它容易叠加路径,导致Where行为异常
Where 字段填什么才真正限定范围?不是 shell,也不是 glob
Where 是前缀匹配器,不是命令行路径解析器。填错一个字符,Replace All 就可能改崩 node_modules 或构建产物。
- 搜整个项目:只填
.(一个英文点),不是./,也不是留空(留空等价于当前标签页) - 只搜
src/下所有 JS/TS:写成src/ *.js,*.ts(逗号分隔,斜杠统一用/) - 排除依赖和产出:追加
, -node_modules/, -dist/, -build/(注意减号后有空格,路径大小写敏感) - 搜所有已打开但未保存的标签页:必须手动填
open_files,这是唯一可靠方式
正则替换总出错?盯住 .* 图标、$1 和 (?s)
Sublime 的正则开关是面板级独立的——Ctrl+F、Ctrl+H、Ctrl+Shift+F 三处的 .* 图标必须各自点蓝,否则 \d+、^$ 全当普通字符串处理。
- 捕获组引用永远用
$1,不是\1;$0指代整个匹配串 -
.默认不匹配换行符;跨行匹配必须加(?s)前缀,例如(?s)console\.log$$.*?$$ - 删空行别用
^\s*$——\s会吞掉\n,改用^[ \t]*$ - 提取函数参数优先用
([^)]+)而非(.*?),防贪婪、抗嵌套、不破界
Replace All 后文件没变?这不是 Bug,是设计
所有替换结果都存在内存里,关掉未保存的标签页,改动直接丢弃。Sublime 不标记“已修改”,也不更新右上角星号 *,更不提供跨文件撤销历史。
- 替换完必须立刻执行
Ctrl+K松开 →Ctrl+B(Windows/Linux),macOS 是Cmd+K→Cmd+B - 高风险操作前务必
git commit -m "before global replace";替换后用git diff核对真实改动,别信面板里“已替换 87 处” - 项目含大
node_modules时,记得在Preferences → Settings里加"index_files": false,否则搜索卡死
大型代码库重构时最危险的不是正则写错,而是 Where 范围失控或忘记保存——这两步没做对,前面所有精准匹配都白搭。











