find in files 的 where 输入框是唯一实时生效的排除路径入口,必须用 .,-/node_modules/, -/dist/ 等严格格式;folder_exclude_patterns 仅在 .sublime-project 的 folders 数组内生效,且不支持双星号;用户设置中配置无效,binary_file_patterns 可能导致漏搜。

Find in Files 的 Where 输入框才是实际生效的排除入口
改 folder_exclude_patterns 后搜索仍进 node_modules,不是配置错了,而是你根本没用对地方。Ctrl+Shift+F(或 Cmd+Shift+F)打开的搜索面板右下角那个 Where 输入框,才是唯一实时控制本次搜索路径的地方。
常见错误写法:-node_modules、-/node_modules、.,-/dist/——全部无效。必须严格按格式:
-
.表示当前项目根目录,必须写在最前 - 每个排除项以
-开头,路径以/结尾:-/node_modules/✅ - 多个规则用英文逗号分隔,且逗号后必须跟一个空格:
., -/dist/, -*/__pycache__/✅ -
-/node_modules/只排除根目录下的;-*/node_modules/才能匹配所有层级(如packages/foo/node_modules/)
.sublime-project 里配 folder_exclude_patterns 是永久方案,但结构不能错
想每次打开项目都自动跳过 node_modules,就得把规则写进项目配置文件 .sublime-project。但它只对当前项目生效,且 JSON 结构稍错就完全不工作。
关键点:
- 必须有
"folders"数组,哪怕只包含一个目录 -
"folder_exclude_patterns"必须放在"folders"每个对象内部,不能平级写在外层 - 路径是相对于
"path"字段的,不是相对于.sublime-project文件本身。比如"path": "src",那要排除根目录的node_modules,就得写"../node_modules" - 值是字符串数组,只写文件夹名:
"node_modules"✅,"node_modules/"或"**/node_modules"❌(Sublime 不支持双星号)
正确示例:
{
"folders": [
{
"path": ".",
"folder_exclude_patterns": ["node_modules", ".git", "dist", ".next"]
}
]
}
别往用户设置里硬塞 folder_exclude_patterns
在 Preferences → Settings(用户设置)里加 folder_exclude_patterns,对 Find in Files 完全无效。它只影响侧边栏显示和 Ctrl+P 的索引范围。
更麻烦的是:全局设置容易误伤。比如你在 Python 项目里排除了 node_modules,没问题;但切到前端项目时,又想查某个 npm 包源码,结果搜不到——你以为代码没了,其实是被全局过滤掉了。
真正该放全局的,只有通用无关项:".git"、".DS_Store"、"*.log" 这类。
binary_file_patterns 会偷偷让搜索漏结果
即使 Where 和 folder_exclude_patterns 都配好了,搜索仍卡顿或漏内容?问题可能出在 binary_file_patterns。
Sublime 默认把 .wasm、.bundle、.zip 等后缀识别为二进制文件,直接跳过内容扫描。如果你项目里有自定义文本格式(比如 .schema、.gql),又没从 binary_file_patterns 列表中移除,它就会被当成二进制忽略。
验证方法:打开一个疑似被跳过的文件,看右下角状态栏是否显示 Binary。如果是,就得把它从 binary_file_patterns 里删掉。
这个设置影响所有搜索和 Ctrl+P,改完建议重启搜索面板(按 Esc 关闭再重开)。











