file_exclude_patterns是唯一能排除文件格式的配置项,必须写入.sublime-project的folders对象内才对ctrl+shift+f生效;folder_exclude_patterns仅匹配文件夹名,对文件格式完全无效。

不能靠 folder_exclude_patterns 排除文件格式,它只认文件夹名;真正管用的是 file_exclude_patterns,且必须写在项目配置里才对 Ctrl+Shift+F 生效。
为什么 folder_exclude_patterns 对文件格式无效
folder_exclude_patterns 的设计目标是跳过整个目录,它只匹配文件夹的 basename(比如 "node_modules"),完全不处理文件后缀或通配符文件名。把它写成 ["*.log", "package-lock.json"] 看似合理,但 Sublime 会安静地忽略这些项——既不报错,也不生效。
- 它只影响侧边栏显示、Ctrl+P 和索引构建,不影响 Find in Files 的实际扫描路径
- 哪怕你把
file_exclude_patterns错写进folder_exclude_patterns字段,Sublime 也根本不会读取 - 用户设置(Preferences → Settings – User)里的
file_exclude_patterns对全局搜索无效,仅作用于 Ctrl+P
file_exclude_patterns 必须放在 .sublime-project 中才控制搜索
想让 Ctrl+Shift+F 真正跳过某些文件(如 *.log、package-lock.json、tsconfig.json),唯一可靠方式是把 file_exclude_patterns 塞进当前项目的 .sublime-project 文件,并确保它位于正确的层级:
- 打开 Project → Edit Project
- 在
"folders"数组内每个对象中添加字段,不是平级写在根对象下 - 值是一个字符串数组,支持通配符
*,但不支持正则 - 示例正确结构:
{ "folders": [ { "path": ".", "file_exclude_patterns": ["*.log", "package-lock.json", "yarn.lock", "tsconfig.json"] } ] }
排除文件时容易踩的坑
写对了位置,还可能因细节失效:
-
"*.log"✅ 有效;"logs/*.log"❌ 无效——不支持路径前缀,只匹配文件名本身 -
"package-lock.json"✅ 匹配同名文件;"package-lock.*"❌ 不会匹配package-lock.json或package-lock.yaml - 多个模式之间不用逗号分隔,直接列在数组里即可,逗号是 JSON 语法要求,不是规则分隔符
- 改完保存后,需关闭并重新打开搜索面板(按
Esc再Ctrl+Shift+F),否则旧索引缓存可能让效果延迟出现
和 binary_file_patterns 别搞混
如果你发现某些文本文件(比如自定义的 .schema 或 .gql)压根没被搜到,不是 file_exclude_patterns 没起作用,而是它们被 binary_file_patterns 当成了二进制文件跳过:
- 检查文件右下角状态栏是否显示
Binary;如果是,说明 Sublime 已放弃读取内容 - 确认
binary_file_patterns里没有误加你的文本格式后缀(比如"*.schema") - 这个设置影响所有搜索和 Ctrl+P,改完建议重启 Sublime 或至少重开所有面板
真正起效的永远是组合:项目配置里的 file_exclude_patterns 控制哪些文件名不参与搜索,Where 输入框控制哪些目录不进入扫描,而 binary_file_patterns 决定哪些后缀连内容都不读——三者职责不同,混用或漏掉任何一个,都可能导致结果漏、慢、杂。











