跨文件搜索必须用Ctrl+Shift+F(Windows/Linux)或Cmd+Shift+F(macOS),且仅在项目模式下生效;Where框填“.”才搜整个项目,正则替换用$1而非\1,需等待索引完成。

跨文件快速查找只能用 Ctrl+Shift+F(Windows/Linux)或 Cmd+Shift+F(macOS),其他快捷键都不行,且必须先加载项目。
为什么 Ctrl+Shift+F 打不开或灰显?
不是快捷键坏了,是 Sublime 拒绝在非项目模式下运行跨文件搜索:
- 左下角状态栏没显示路径(如
~/my-project/),说明只是打开了单个文件,不是项目 —— 必须通过File → Open Folder…重新加载整个目录 - Mac 用户注意:
Cmd+Shift+F默认被系统 Spotlight 占用,要去「系统设置 → 键盘 → 快捷键 → Spotlight」里关掉 - 插件可能劫持快捷键:打开
Preferences → Key Bindings – User,搜"cmd+shift+f"或"ctrl+shift+f",删掉冲突项
Where 框填什么才真正搜整个项目?
填错等于白搜,它不是路径补全框,也不是 shell 命令行:
- 搜全部文件:必须填
.(一个英文点),不是./、./src,更不能留空(留空 = 只搜当前已打开的标签页) - 只搜
src/下的 TypeScript:填src/**/*.ts - 排除
node_modules和dist:写成., -node_modules/, -dist/(逗号分隔,斜杠统一用/) - 路径区分大小写:Linux/macOS 下
./SRC和./src是两个目录
正则替换总失败?盯住 $1、(?s) 和点号行为
Sublime 的正则引擎是 PCRE 风格,但替换语法是自研的,和 Python/JS 不兼容:
- 捕获组引用必须用
$1、$2,不是\1;例如查找getUser$$([^)]+)$$,替换填getUser({ $1 }) -
.默认不匹配换行符 —— 即使开了.*按钮,foo.*bar也找不到foo\nbar;真要跨行,得加前缀(?s)foo.*bar - 点号、括号、加号等元字符在正则模式下必须转义:
console\.log$$[^)]*$$才能匹配console.log("x") - 替换后内容“消失”不是 bug:所有修改都在内存里,关掉未保存的标签页就丢,必须手动按
Ctrl+K松开再按Ctrl+B(即 Save All)
最常被忽略的是:跨文件搜索不依赖文件是否保存,但 Where 填 . 的前提是项目索引已就绪 —— 刚加载大项目时右下角会显示 Indexing…,等它消失再搜,否则漏匹配。










