sublime text全局搜索排除文件夹唯一有效方式是在where输入框填写., -/node_modules/, -/dist/等严格格式规则;folder_exclude_patterns仅影响索引和侧边栏,对ctrl+shift+f无效。

Sublime Text 的全局搜索(Ctrl+Shift+F)不会读取 file_exclude_patterns 或用户级 folder_exclude_patterns,真正起效的只有两个地方:搜索面板的 Where 输入框,以及影响文件读取时机的 binary_file_patterns。其他所有配置写得再全,对这次搜索都无效。
Where 输入框怎么写排除规则才不白填
Where 是唯一实时控制本次搜索路径的位置,填错格式等于没写。它不是正则,也不接受模糊路径,只认严格前缀匹配。
-
.必须写在最前面,表示当前项目根目录;漏掉它,整个规则失效 - 每个排除项以
-开头,路径必须以/结尾:-/node_modules/✅,-node_modules❌,-/node_modules❌ - 多规则用英文逗号分隔,且逗号后**必须跟一个空格**:
., -/dist/, -/build/✅,.,-/dist/❌ -
-*/__pycache__/可匹配任意深度的__pycache__,但-**/node_modules无效(Sublime 不支持双星号) - 填完立刻生效,不用重启、不用重开项目——但若已打开搜索面板,需按
Esc关闭再重新呼出
为什么删了 node_modules 还在搜第三方代码
因为 Where 没填,或填错了格式,导致 Sublime 默认“全量扫描”。遇到 node_modules 这种几十万文件的目录,不仅结果混杂,还会卡顿、内存飙升,甚至触发系统 IO 限流。
- 典型症状:搜索响应慢、结果里大量命中
node_modules/react/...或dist/vue.runtime.esm-bundler.js - 根本原因不是插件问题,而是你没在
Where里主动排除——Sublime 不会替你做这个判断 - 临时补救:呼出搜索面板 → 在
Where框里粘贴., -/node_modules/, -/dist/, -/build/ - 长期方案:把常用排除项记成快捷短语,比如存为文本片段
sub-where-node,避免每次手敲
binary_file_patterns 静默跳过文件的真相
即使你已在 Where 里写了 -, *.log,搜索仍可能漏掉某些文本文件——因为它们被 binary_file_patterns 提前标为二进制,压根没送进正则引擎。
- 检查方法:直接打开那个文件,看右下角状态栏是否显示
Binary;如果是,说明它被该设置拦截了 - 常见误判格式:
.gql、.schema、.graphql、.env(如果含非 ASCII 字节或 BOM) - 修改位置:菜单 →
Preferences → Settings – User,添加或编辑"binary_file_patterns"数组 - 示例:想让
.gql可被搜到,就得把它从默认列表里删掉;想彻底跳过.min.js和.map,就加进去 - 改完需重启 Sublime 或至少重开所有搜索面板,否则右下角仍可能显示
Binary
别碰用户设置里的 folder_exclude_patterns
在 Preferences → Settings – User 里硬塞 folder_exclude_patterns,对全局搜索完全无效,还容易引发跨项目干扰。
- 它只影响侧边栏显示和
Ctrl+P索引范围,不影响Ctrl+Shift+F的磁盘遍历逻辑 - 全局配置会污染所有项目:你在前端项目里排除了
node_modules,切到 Python 项目查pip install源码时,就搜不到site-packages/下的内容 - 真要永久排除,必须写进
.sublime-project文件的folders数组内,且路径是相对于path字段的 - 错误示范:
"folder_exclude_patterns": ["node_modules"]直接写在用户设置顶层 JSON 里 → 结构错 + 用途错,双重失效
最常被忽略的点是:排除逻辑分两层——Where 控制“读哪些文件”,binary_file_patterns 控制“哪些文件值得读”。漏掉任一层,搜索就不可靠。











