Where框是路径前缀过滤器,非文件名搜索;填src/匹配所有以src/开头的文件,填.搜整个项目,填open_files搜未保存标签页,排除目录须用-/node_modules/格式。

Ctrl+Shift+F 的 Where 框不是文件名搜索,而是路径前缀过滤器
很多人输 Button.vue 或 */api/*.js 到 Where 框里,结果搜不到——因为 Where 不匹配文件名,只按路径字符串做前缀判断。它本质是“哪些路径下的文件参与内容搜索”,不是“我要找叫什么的文件”。
正确理解:src/ 表示所有路径以 src/ 开头的文件(含 src/utils/fetch.js、src/components/Button.vue);.py 表示路径以 .py 结尾的文件(即所有 Python 文件)。
-
.(单个点)才表示整个项目根目录,不是./、./src/或留空 -
src/自动递归,不用写src/**/*;但若要精确到某层,可用src/*/*.vue - Windows 上也必须用
/作分隔符,\src\会被当字面量处理 - 填错格式(如多空格、少斜杠、漏点)会导致整个
Where失效,退化为只搜当前视图
排除 node_modules 等目录必须用 -/node_modules/ 格式
在 Where 框里写 ., -/node_modules/, -/dist/ 是唯一实时生效的排除方式。folder_exclude_patterns 配置只影响 Ctrl+P 和侧边栏显示,对全局搜索完全无效。
- 开头必须是
.,否则整个规则不启动 - 每个排除项以
-开头、以/结尾:-/node_modules/✅,-node_modules❌,-/node_modules❌ - 逗号后必须跟一个空格:
., -/dist/, -/build/✅,.,-/dist/❌ - 想排除所有层级的
node_modules,得写-*/node_modules/,**/node_modules/不支持
搜未保存的标签页?唯一合法值是 open_files
如果你刚新建了几个文件还没保存,又想在这些临时内容里搜关键字,Where 框不能填 . 或 src/——它们只扫磁盘文件。此时必须显式写 open_files,这是 Sublime 唯一识别的特殊关键词。
-
open_files不支持与其他路径组合,比如open_files, src/会失效 - 它不区分语言或编码,纯文本扫描;但未保存文件无路径,所以搜索结果里不会显示行号前缀
- 如果混用已保存文件和未保存标签页,得分开两次搜索:一次
.,一次open_files
为什么改了 folder_exclude_patterns 还在 node_modules 里出结果?
因为 folder_exclude_patterns 只控制项目加载时是否把某个文件夹加入索引(影响 Ctrl+P、符号跳转),不影响 Find in Files 的物理扫描行为。即使你在 .sublime-project 里写了 "folder_exclude_patterns": ["node_modules"],只要 Where 框没排除,搜索照样扫进去。
- 真正起作用的只有
Where框里的-/node_modules/规则 -
binary_file_patterns也会干扰:如果node_modules里有大量二进制文件(如 .png、.zip),Sublime 会逐个尝试读取并跳过,导致卡顿或超时返回空 - 右下角 Exclude folders 栏(竖线分隔)是另一套逻辑:它只按文件夹名过滤,大小写敏感,且无法指定层级

















