where输入框是唯一实时生效的排除方式:需以.开头、每项以-开头且路径以/结尾、逗号后加空格,如., -/node_modules/, -/dist/;folder_exclude_patterns仅影响索引不控制搜索;binary_file_patterns可能误判文本文件为二进制导致漏搜;exclude folders栏仅按文件夹名模糊匹配,不支持路径层级控制。

Where输入框是唯一实时生效的排除方式
Sublime Text 的 Ctrl+Shift+F 默认全量扫描磁盘路径,node_modules、dist、build 这类目录不手动排除,搜索就卡、结果就杂。项目配置里的 folder_exclude_patterns 对它完全无效——它只管侧边栏和 Ctrl+P,不管这次搜不搜。
真正起效的,只有打开搜索面板后右下角那个 Where 输入框。填错格式,整个排除就失效:
-
.表示当前项目根目录,必须写在最前(如., -/node_modules/, -/dist/) - 每个排除项必须以
-开头,路径以/结尾:-/node_modules/✅,-node_modules或-/node_modules❌ - 多个规则用英文逗号分隔,且逗号后必须跟一个空格:
., -/dist/, -*/__pycache__/✅,.,-/dist/❌ -
-*/node_modules/会排除所有层级(包括packages/foo/node_modules),-/node_modules/只排除根目录下
folder_exclude_patterns 只影响索引,不是搜索开关
很多人改了 folder_exclude_patterns 却发现搜索还是进 node_modules,是因为误以为它控制搜索行为。实际上,它只决定哪些文件夹被纳入全局索引——影响 Ctrl+P、Ctrl+Shift+R 和侧边栏显示,但 Ctrl+Shift+F 仍会物理遍历磁盘路径。
想让它“永久”生效(比如每次打开项目都自动跳过),必须写进 .sublime-project 文件,且结构不能错:
-
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 里排除了目录,搜索仍卡顿或漏结果?问题可能出在 binary_file_patterns。Sublime 默认把 .wasm、.bundle、.zip 等后缀识别为二进制,直接跳过内容扫描。
如果你项目里有自定义文本格式(比如 .schema、.gql),又没从 binary_file_patterns 里移除,它就会被当成二进制忽略:
- 检查方法:打开一个疑似被跳过的文件,看右下角状态栏是否显示
Binary;如果是,就得把它从binary_file_patterns列表中删掉 - 这个设置影响所有搜索和
Ctrl+P,改完建议重启 Sublime 或至少重开项目
Exclude folders 栏只按文件夹名模糊匹配
搜索面板里的 Exclude folders 栏(带竖线 | 分隔)和 Where 不是一回事:它只过滤「文件夹名」,不看路径层级,也不支持通配符。
填 node_modules|.git|dist,会跳过所有叫这些名字的文件夹,无论它在 src/ 下还是 packages/foo/ 下:
- 大小写敏感:
Node_modules不会被node_modules匹配(Linux/macOS 默认区分) - 不解析路径,所以
../node_modules或src/node_modules这类写法无效 - 适合快速屏蔽通用命名目录,但无法精准控制层级——比如你只想排除根级
dist而保留src/dist,它做不到
真正需要精确控制时,别碰这栏,老老实实用 Where 输入框写路径规则。











