Sublime Text全局搜索排除目录必须用Where输入框实时设置,如., -/node_modules/, -/dist/;folder_exclude_patterns仅影响索引和Ctrl+P,对Ctrl+Shift+F无效。

Sublime Text 的全局搜索(Ctrl+Shift+F)默认会扫整个项目,但 folder_exclude_patterns 配置根本不管它——这是最常被卡住的点。真正控制搜索范围的,只有 Where 输入框里的规则,且优先级最高、改完立刻生效。
Where 输入框怎么写排除规则才有效
Where 是唯一能实时干预本次搜索路径的地方,填错格式或空格位置,整个排除就失效。
- 基本结构是:
.(表示当前项目根目录) + 逗号 + 排除项,例如:., -/node_modules/, -/dist/ - 每个排除项必须以
-开头,后面紧跟路径,结尾加正斜杠/(如-/node_modules/),否则 Sublime 可能不识别 - 多个排除项用英文逗号分隔,逗号后必须跟一个空格,写成
,-/node_modules/会被完全忽略 - 支持通配层级:
-*/__pycache__/排除所有深度的__pycache__,-/build/只排除根目录下的build - 不支持正则、不支持双星号路径匹配(如
**/node_modules无效),只认前缀匹配
folder_exclude_patterns 为什么改了也不影响搜索
这个配置只影响索引和 Ctrl+P 跳转,对 Ctrl+Shift+F 搜索完全没用——它甚至不读这个字段。
- 它只在项目加载时起作用:决定哪些文件夹被纳入「全局索引」,从而影响
Ctrl+P、Ctrl+Shift+R和侧边栏显示逻辑 - 写在用户设置(
Preferences → Settings – User)里,对Find in Files依然无效;必须写进.sublime-project才可能间接减少干扰(因为索引变小,但搜索仍会遍历物理路径) - 常见误操作:把
"folder_exclude_patterns": ["node_modules"]直接塞进用户设置顶层 JSON,结果既不隐藏侧边栏,也不影响搜索——结构错误 + 用途错配
搜索面板里的 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 里主动排除——Sublime 默认“全量扫描”,遇到 node_modules 这种几十万文件的目录,IO 和内存都会拉满。
- 别依赖“等它扫完”,先在
Where里加., -/node_modules/, -/dist/, -/build/ - 如果项目有 monorepo 结构(如
packages/*/node_modules),得额外加-*/node_modules/ - 搜完替换后,
Save All必须手动执行,Sublime 不自动保存任何修改,关掉就丢 - 若仍卡顿,检查是否开启了
index_files(项目设置里设"index_files": false可禁用索引,换为纯路径扫描)
真正管用的排除,永远发生在搜索发起那一刻的 Where 输入框里;其他配置只是辅助索引和导航,别指望它们替你拦住 node_modules 的洪流。

















