where输入框是find in files唯一实时生效的排除入口,需用-/path/格式;folder_exclude_patterns仅影响索引和ctrl+p,对搜索无效。

必须在 Find in Files 的 Where 输入框里写 -/node_modules/ 这类规则,否则无论项目配置怎么改,搜索都会扫进去。
Where 输入框才是搜索排除的唯一实时入口
Sublime Text 的 Ctrl+Shift+F(Windows/Linux)或 Cmd+Shift+F(macOS)默认全量扫描物理目录,folder_exclude_patterns 对它完全无效——这是最常卡住人的点。真正起作用的,只有搜索面板右下角的 Where 输入框,填完立刻生效,不重启、不重载。
-
.表示当前项目根目录(前提是已打开文件夹或项目) - 每个排除项必须以
-开头,后接路径,结尾加正斜杠,例如:-/node_modules/(排除根级)、-*/__pycache__/(排除所有层级) - 多个规则用英文逗号分隔,且逗号后必须跟一个空格:
., -/dist/, -/build/, -*/.git/✅;.,-/dist/❌ - 不支持正则、不支持双星号(
**/node_modules无效),只做前缀匹配
folder_exclude_patterns 只影响索引和 Ctrl+P,不是为搜索设计的
这个配置常被误用。它只在项目加载时决定哪些文件夹进「全局索引」,从而影响 Ctrl+P 跳转、Ctrl+Shift+R 符号查找,以及侧边栏是否显示(但即使隐藏了,搜索仍可能命中——因为物理路径还在)。
- 必须写在
.sublime-project文件的folders数组内,结构错误就完全不生效:{"folders": [{"path": ".", "folder_exclude_patterns": ["node_modules", ".git"]}]} - 值是纯文件夹名字符串数组,不能带斜杠:
"node_modules"✅,"node_modules/"❌,"/node_modules"❌ - 写在用户设置(
Preferences → Settings – User)里,对Find in Files依然无效
Exclude folders 栏 ≠ Where 输入框,别混用
搜索面板右下角那个带竖线 | 分隔的 Exclude folders 栏,和 Where 不是一回事。它只按文件夹名过滤,不看路径层级,也不支持通配符。
- 填
node_modules|.git|dist,会跳过所有叫这名字的文件夹,无论它在src/下还是packages/foo/下 - 大小写敏感:Linux/macOS 下
Node_modules不会被node_modules匹配 - 无法精准控制层级——比如只想排除根级
dist却保留src/dist,它做不到
真正要精准控制搜索范围,Where 输入框是唯一可靠路径;而 folder_exclude_patterns 是为索引服务的,不是搜索开关。很多人调了半天配置却没效果,问题就出在这两者的职责边界上——它们根本不在同一个执行链路里。











