全局搜索排除文件唯一即时有效的方式是在Where输入框写规则,如., -*.log, -package-lock.json;file_exclude_patterns仅在.sublime-project的folders内生效,folder_exclude_patterns只匹配文件夹名。

Where输入框里用-*.log这类写法才生效
全局搜索(Ctrl+Shift+F)中排除特定后缀,唯一即时有效的方式是在搜索面板右下角的Where输入框里直接写排除规则。它不读file_exclude_patterns用户设置,也不认项目配置里的同名字段——除非你把它塞进.sublime-project的folders对象里(但那是另一套逻辑)。这里只管“这一次搜什么、不搜什么”。
正确写法示例:., -*.log, -*.min.js, -package-lock.json
-
-*.log✅ 排除所有.log文件(注意*在-后面,不是*.log) -
-package-lock.json✅ 精确匹配该文件名,不带通配符也生效 -
-tsconfig.*❌ 不会匹配tsconfig.json或tsconfig.dev.json——Where不支持.后通配 - 逗号后必须跟空格:
., -*.log, -yarn.lock✅;.,-*.log❌(整个排除被忽略)
file_exclude_patterns只在.sublime-project里对搜索起作用
想让*.log、yarn.lock这类文件在每次Ctrl+Shift+F时都自动跳过,不能靠用户设置(Preferences → Settings – User),必须把file_exclude_patterns写进当前项目的.sublime-project文件,并且放在folders数组内每个路径对象里。
错误位置:{"file_exclude_patterns": ["*.log"]}(平级写在根对象下 → 无效)
正确结构:
{
"folders": [
{
"path": ".",
"file_exclude_patterns": ["*.log", "yarn.lock", "package-lock.json"]
}
]
}
- 只匹配文件名本身,不认路径前缀:
"logs/*.log"❌,"*.log"✅ - 大小写敏感:Linux/macOS 下
"*.LOG"不会排除error.log - 改完保存后,需按
Esc关闭当前搜索面板,再重新Ctrl+Shift+F,否则缓存索引可能仍包含已排除文件
别和binary_file_patterns搞混了
有时候你写了-*.log,但某些.log文件还是没出现在结果里——很可能它们根本没被当作文本扫描,而是被binary_file_patterns当成了二进制文件直接跳过。
- 检查方法:打开一个你想搜的
.log文件,看右下角状态栏是否显示Binary - 如果是,说明它被
binary_file_patterns拦截了,和Where或file_exclude_patterns无关 - 解决方式:在用户设置或项目设置中,把
.log从binary_file_patterns数组里删掉(默认不含.log,但团队可能加过自定义项) - 这个设置影响所有搜索和
Ctrl+P,改完建议重启 Sublime 或至少重开所有面板
folder_exclude_patterns对文件后缀完全没用
很多人把["*.log", "package-lock.json"]塞进folder_exclude_patterns,结果发现一点效果都没有——这不是配置没生效,而是设计如此。folder_exclude_patterns只匹配**文件夹名**,比如"node_modules"、".git",它根本不解析文件后缀或通配符文件名。
- 写成
["*.log"]会被 Sublime 安静忽略,既不报错也不生效 - 哪怕你把它错放在
.sublime-project的folders里,也只影响侧边栏和索引,不影响Ctrl+Shift+F的实际扫描 - 真正管文件后缀的只有
file_exclude_patterns(项目级)和Where输入框(单次)
file_exclude_patterns写在了错误层级。它必须嵌套在folders里,且Where里的-规则优先级最高——哪怕项目配置写了排除,Where里又写了相反规则,也会以Where为准。


















