Sublime Text跨文件搜索必须用Ctrl+Shift+F(Win/Linux)或Cmd+Shift+F(macOS),且需先通过File→Open Folder…加载项目(左下角显示路径),Where填“.”才搜整个项目;快捷键被劫持或未进项目模式会导致面板灰显或无效;替换后须手动Save All,否则修改丢失。

Ctrl+Shift+F(Win/Linux)或 Cmd+Shift+F(macOS)是唯一能真正跨文件查找替换的入口,其他任何快捷键(包括 Ctrl+H、Ctrl+F、右键菜单)都只作用于当前标签页。
为什么 Ctrl+Shift+F 打不开或面板灰显?
根本原因只有两个:没进项目模式,或快捷键被插件劫持。
- 没进项目模式:左下角状态栏不显示类似
~/my-project/的路径,说明只是单文件打开;必须用File → Open Folder…重新加载整个文件夹 - 快捷键被劫持:打开
Preferences → Key Bindings – User,搜索"ctrl+shift+f"或"cmd+shift+f",删掉冲突项 - 不确定谁占用了?去
Key Bindings – Default底部确认原生绑定是否存在:{"keys": ["ctrl+shift+f"], "command": "show_panel", "args": {"panel": "find_in_files"}}
Where 字段填什么才真正扫整个项目?
它不是路径补全框,也不是 shell,填错一个字符就可能漏掉 90% 的文件。
- 填
.(单个英文点):表示整个项目根目录及其所有子目录,最常用也最安全 - 填
./src/**/*.js:只搜src/下所有.js文件(**表示递归) - 排除
node_modules和dist:写成., -node_modules/, -dist/(注意统一用正斜杠/,Windows 上也一样) - 留空 ≠ 全项目:实际等价于“只搜当前已打开的标签页”,这是最多人踩的坑
- Linux/macOS 路径区分大小写:
./SRC和./src是两个目录
正则替换总出错?盯住 .、$1 和换行
Sublime 的正则引擎是 PCRE 风格,但替换语法是自研的,和 Python、JavaScript 都不完全一致。
-
.默认不匹配换行符:哪怕开了.*按钮,foo.*bar也找不到foo\nbar;真要跨行,必须加(?s)前缀:(?s)foo.*bar - 捕获组引用只能用
$1、$2,不能用\1——后者在 Sublime 里是字面量,不会被解析 - 例如把
getUser(id)改成getUser({ id }):查找填getUser$$([^)]+)$$,替换填getUser({ $1 })(括号需转义) - 删独立
console.log行:查找填^[ \t]*console\.log$$[^)]*$$;[ \t]*$,替换留空;注意.和$要转义,^和$锁定整行
Replace All 后内容丢了?这不是 Bug,是设计
Sublime 不会自动保存被修改的文件——所有改动都在内存里,关掉未保存的标签页,修改直接丢弃。没有跨文件撤销历史。
- 替换前务必执行:
git add -A && git commit -m "before global replace",出错时git checkout .秒级回滚 - 替换后必须手动保存:按
Ctrl+K松开,再按Ctrl+B(Windows/Linux),macOS 是Cmd+K→Cmd+B - 别依赖标签页右上角的星号
*——它不强制你保存,也不阻止你直接关窗口 - 检查
file_exclude_patterns设置,*.log或*.min.js可能被跳过,搜不到不一定是没匹配,而是被过滤了


















