file_exclude_patterns必须放在.sublime-project的folders对象内,因全局搜索仅读取该项目配置中的该字段;用户设置中同名字段仅影响Ctrl+P文件名搜索,对内容搜索无效。

全局搜索跳过 package-lock.json、tsconfig.json、*.log 这类文件,唯一可靠方式是把 file_exclude_patterns 写进 .sublime-project 的 folders 对象里;写在用户设置或错放位置都无效。
为什么 file_exclude_patterns 必须放在项目配置里?
Sublime 的 Ctrl+Shift+F(Windows/Linux)或 Cmd+Shift+F(macOS)只读取当前项目的 folders 配置块中的 file_exclude_patterns。用户设置(Preferences → Settings – User)里的同名字段仅影响 Ctrl+P 文件名搜索,对内容搜索完全不生效。
-
file_exclude_patterns是纯文件名匹配,不支持路径前缀,比如"logs/*.log"❌ 无效,"*.log"✅ 有效 - 通配符只认
*,不支持正则、**或? - 写成
"package-lock.*"❌ 不会匹配package-lock.json;必须写全名"package-lock.json"✅ - 改完保存后,需关闭并重新打开搜索面板(按
Esc再按快捷键),否则旧索引缓存可能让规则延迟生效
folder_exclude_patterns 和 file_exclude_patterns 别混用
这两个字段名字像,但作用完全不同,填错位置等于白配。
-
folder_exclude_patterns:只跳过整个文件夹(如"node_modules"、"dist"),对文件格式毫无影响 -
file_exclude_patterns:只跳过匹配的文件名(如"*.log"、"yarn.lock"),对文件夹名完全不识别 - 想同时过滤目录和文件,得两个字段都写,并且都放在
folders数组内每个对象中 - 错误示例:
{"file_exclude_patterns": ["*.log"]}—— 缺少"folders"包裹,Sublime 直接忽略
Where 输入框里的临时过滤,优先级更高
如果不想动配置文件,搜索时可在面板右下角 Where 框直接写过滤规则,语法更灵活,且覆盖项目配置。
- 只搜
src/下所有文件:src/ - 搜整个项目但排除
node_modules和dist:., -node_modules/, -dist/(逗号前后不能有空格) - 限定类型 + 排除目录:
src/**/*.ts, -src/test/ - 注意:这里路径统一用正斜杠
/,即使在 Windows 上也别用\ - 这个输入法不依赖索引重建,改完立刻生效,适合快速验证是否真被过滤
别忘了 binary_file_patterns 这个隐形开关
有些你认为该被搜到的文本文件(比如 .gql、.schema、自定义 DSL 文件)压根没出现在结果里,不是 file_exclude_patterns 搞鬼,而是被 binary_file_patterns 当成了二进制文件跳过。
- 检查方法:右键目标文件 →
Open All with Current Encoding,如果弹出乱码提示,大概率被归类为 binary - 解决办法:在项目配置的
settings块中加一行:"binary_file_patterns": ["!*.gql", "!*.schema"](前面加!表示“不视为二进制”) - 这个字段必须写在
.sublime-project的顶层settings中,不是folders里 - 它和
file_exclude_patterns是两套机制:一个决定“要不要读”,一个决定“读了之后跳不跳过”
最常被忽略的是:改了配置却不关掉再开搜索面板,或者把 file_exclude_patterns 塞进了 folder_exclude_patterns 字段——Sublime 完全不报错,只是安静地当它不存在。

















