Sublime全局搜索需先加载项目,否则Ctrl+Shift+F无效;Where框填路径前缀(如.、src/、open_files);正则替换须启用.*、用$1引用、加(?s)跨行;替换后需手动Save All且无撤销。

Sublime 的“全局搜索全文内容”功能不是开箱即用的,它必须满足一个硬性前提:项目已加载。没打开文件夹,Ctrl+Shift+F(Windows/Linux)或 Cmd+Shift+F(macOS)根本不会激活——面板灰显、快捷键无响应、结果为空,全是因为这个原因。
为什么 Ctrl+Shift+F 打不开或搜不到东西?
根本问题不在快捷键本身,而在 Sublime 是否处于项目模式。单文件打开时,它连 Where 输入框都不会显示。
- 看左下角状态栏:是否显示类似
~/my-project/的路径?没有 → 还没进项目模式 - 看侧边栏:有没有完整树形目录结构?只有标签页 → 不代表能全局搜
- Mac 用户注意:
Cmd+Shift+F常被系统 Spotlight 占用,需在「系统设置 → 键盘 → 快捷键 → Spotlight」里禁用 - 插件也可能劫持快捷键:打开
Preferences → Key Bindings – User,搜"ctrl+shift+f"或"cmd+shift+f",删掉冲突项
Where 输入框到底怎么填才真正生效?
Where 不是 shell,也不是 glob 引擎(除非你点了 .*),它是路径前缀匹配器。填错等于白搜。
- 搜整个项目:
.(单个英文点),不是./,也不是留空 - 只搜
src/下所有文件:src/,自动递归子目录,不用写src/**/* - 限定文件类型:
src/ *.js,*.ts(逗号分隔,统一用/,Windows 也一样) - 排除
node_modules:., -node_modules/, -dist/(减号开头,空格可选但建议加) - 搜所有已打开但未保存的标签页:
open_files—— 这个关键字官方几乎不提,但它是唯一可靠方式
正则替换最容易踩的三个坑
点开 .* 图标 ≠ 正则就真生效了;$1 能用,\1 不能用;换行符默认不匹配——这三点不确认清楚,Replace All 就是高危操作。
-
.*图标必须是蓝色的,才表示正则已启用;Ctrl+F、Ctrl+H、Ctrl+Shift+F三处开关互相独立,每处都得单独点 - 捕获组引用一律用
$1、$2,不是\1;$0表示整个匹配串 - 想跨行匹配?必须加
(?s)前缀,例如(?s)"content": "(.*?)";否则foo.*bar永远找不到foo\nbar - 括号、点号、引号等特殊字符在查找中要转义:
console\.log\(\),否则会被当正则元字符处理
替换后内容丢了?这不是 Bug,是设计
Sublime 的全局替换不触发任何保存提示,也不标记文件为“已修改”。所有更改都在内存里,关掉就清空,没有任何撤销历史。
- 替换完必须手动执行
File → Save All,或快捷键:Ctrl+K松开 →Ctrl+B(Windows/Linux),Cmd+K→Cmd+B(macOS) - 标签页右上角没出现
*≠ 没改成功,是 Sublime 压根不更新这个状态 - 高风险操作前务必
git stash或git commit -m "before global replace";替换完立刻git diff看真实改动范围,别信面板里的“已替换 42 处” - 如果项目含大
node_modules,记得在Preferences → Settings里加"index_files": false,否则搜索卡死或漏文件

















