Where输入框是控制Find in Files路径的唯一实时开关,必须用./-开头、/结尾、逗号加空格分隔;folder_exclude_patterns仅影响索引不控制搜索;Exclude folders栏按文件夹名粗粒度过滤;binary_file_patterns误配会导致文本被静默跳过。

Where输入框是唯一实时生效的过滤入口
改了folder_exclude_patterns却还在node_modules里翻结果?不是配置错了,是你根本没用对地方。Ctrl+Shift+F(或Cmd+Shift+F)打开的搜索面板右下角那个Where输入框,才是控制本次搜索路径的唯一实时开关。
常见错误写法:-node_modules、-/node_modules、.,-/dist/——全部无效。必须严格按格式来:
-
.表示当前项目根目录,必须写在最前 - 每个排除项以
-开头,路径以/结尾:-/node_modules/✅,-node_modules/❌ - 多个规则用英文逗号分隔,且逗号后**必须跟一个空格**:
., -/dist/, -*/__pycache__/✅ -
-/node_modules/只排除根级;-*/node_modules/才匹配所有层级(如packages/foo/node_modules/)
folder\_exclude\_patterns只影响索引,不控制搜索行为
这个配置常被当成“搜索开关”,但它实际只在项目加载时决定哪些文件夹进全局索引——影响的是Ctrl+P跳转、Ctrl+Shift+R符号查找,以及侧边栏是否显示。即使你把它设成隐藏,Find in Files仍会物理扫描那些目录。
它必须写在.sublime-project文件的folders数组内,结构稍错就完全不生效:
- 外层必须有
"folders"字段,不能平级写"folder_exclude_patterns" - 值是纯字符串数组:
"node_modules"✅,"node_modules/"❌,"**/node_modules"❌(Sublime不支持双星号) - 路径是相对于
"path"字段的,不是相对于.sublime-project文件本身
Exclude folders栏和Where输入框不是一回事
搜索面板右下角那个带竖线|分隔的Exclude folders栏,和Where不是同一机制:
- 它只按文件夹名过滤,不看路径层级,也不支持通配符或斜杠
- 填
node_modules|.git|dist,会跳过所有叫这名字的文件夹,无论它在src/下还是packages/foo/下 - 大小写敏感:Linux/macOS下
Node_modules不会被node_modules匹配 - 无法精准控制层级——比如只想排除根级
dist却保留src/dist,它做不到
binary\_file\_patterns可能偷偷让搜索变慢或漏结果
即使你已用Where或folder_exclude_patterns排除了目录,搜索仍可能卡顿、返回空结果——问题常出在binary_file_patterns。
这个设置默认包含"*.exe", "*.dll", "*.so", "*.dylib"等,但如果你手动加了"*.js"或"*.log",就会导致大量文本文件被当作二进制跳过,表面看是“搜不到”,其实是被静默过滤了。
检查方法:打开Preferences → Settings – User,确认没有误加这类通配符;若需全局忽略日志,优先用file_exclude_patterns而非binary_file_patterns。
真正容易被忽略的是:Where输入框里的规则和folder_exclude_patterns是叠加生效的,不是替代关系。哪怕你项目配置里写了"node_modules",只要Where里没排除,搜索仍可能扫进去——因为前者只管索引,后者才管这次扫描的路径边界。


















