sublime「find in files」需用where输入框实时排除目录,语法为./-目录/,逗号分隔;项目级排除须正确配置.sublime-project中folders内的folder_exclude_patterns;binary_file_patterns可能误判文本文件为二进制导致漏搜。

Sublime 的「Find in Files」(Ctrl+Shift+F)默认会扫整个项目目录,一旦撞上 node_modules、.git 或 dist 这类目录,搜索要么卡住,要么结果里全是第三方代码——这不是你代码写得不好,而是没用对排除机制。
Where 输入框是唯一实时生效的排除方式
项目配置里的 folder_exclude_patterns 对 Ctrl+Shift+F 完全无效,它只影响侧边栏和 Ctrl+P。真正能立刻控制本次搜索范围的,只有打开搜索面板后右下角的 Where 输入框。
- 语法必须以
.开头,表示当前项目根目录;排除项以-开头,结尾加/(如-/node_modules/),否则不识别 - 多个规则用英文逗号分隔,且逗号后必须跟一个空格:
., -/dist/, -*/__pycache__/✅;.,-/dist/❌ -
-*/node_modules/会排除所有层级的node_modules(包括packages/foo/node_modules);-/node_modules/只排除根目录下的 - 大小写敏感:在 Linux/macOS 上,
Node_modules不会被node_modules排除
项目级 folder_exclude_patterns 必须写对结构才起作用
想让排除规则“永久”生效(比如每次打开这个项目都自动跳过 node_modules),得把配置写进 .sublime-project 文件,且结构不能错。
- 必须有外层
"folders"数组,"folder_exclude_patterns"是每个"folders"对象的子字段,不是平级字段 - 路径只写文件夹 basename,不带斜杠:
"node_modules"✅;"node_modules/"或"./node_modules"❌ - 如果
"path": "src",那要排除根目录的node_modules,就得写"../node_modules",而不是"node_modules" - 修改后需关闭并重开搜索面板(或按
Esc关掉当前面板再重新Ctrl+Shift+F),否则看不到效果
binary_file_patterns 常偷偷拖慢搜索
即使你已经用 Where 或 folder_exclude_patterns 排除了目录,搜索仍可能卡顿或漏结果——问题往往出在 binary_file_patterns。
- Sublime 默认把
.wasm、.bundle、.zip等后缀识别为二进制,直接跳过内容扫描 - 如果你项目里有自定义文本格式(比如
.schema、.gql),又没从binary_file_patterns里移除,它就会被当成二进制忽略 - 检查方法:随便打开一个疑似被跳过的文件,看右下角状态栏是否显示
Binary;如果是,就得把它从binary_file_patterns列表中删掉 - 这个设置影响所有搜索和
Ctrl+P,改完建议重启 Sublime 或至少重开所有面板
最常被忽略的一点:folder_exclude_patterns 和 Where 语法互不兼容——前者只认文件夹 basename,后者要显式路径;你没法靠改项目配置来绕过 Where 的语法要求,也没法靠 Where 来“修复”项目配置的结构错误。











