Sublime Text全局搜索(Ctrl+Shift+F)仅扫描已通过File→Open Folder…加载的项目根目录;Where框填“.”搜全项目,“src/”限定子目录,排除用“., -/dist/”格式,folder_exclude_patterns不控制搜索范围。

Ctrl+Shift+F 默认只搜已加载的文件夹
Sublime Text 的全局搜索(Ctrl+Shift+F / Cmd+Shift+F)根本不会扫描磁盘任意位置,它只在「已通过 File → Open Folder… 加载到侧边栏」的目录内工作。如果你双击打开单个 index.html 就按快捷键,它要么只搜当前标签页,要么报错——src/api/ 这种没被加载的路径压根不会进扫描范围。
验证是否成功加载:看左侧边栏是否有完整树形结构,状态栏是否显示类似 my-project/ 的路径前缀。
- 必须用
File → Open Folder…选中项目根目录(如my-app/),不是子目录(如my-app/src) - 如果项目有
package.json或src/目录,就该打开这一层,否则索引不全 - 没加载对文件夹,
Where框填什么都白搭
Where 输入框填 src/ 就能限定到子目录
Where 框不是 shell,也不是正则编辑器,它做的是纯路径前缀匹配。填 src/ 表示“所有路径以 src/ 开头的文件”,自动覆盖 src/components/Button.vue、src/api/auth.js 等,不需要写 src/**/* 或 ./src/。
- 搜整个项目:必须填
.(单个英文点),不是./,也不是留空 - 只搜
tests/下所有文件:直接填tests/ - 多个路径:用英文逗号分隔,且逗号后必须跟一个空格,例如
src/, tests/, docs/ - 填错一个字符(比如多加斜杠、少空格),整个搜索范围就失效
排除某些子文件夹要用 ., -/dist/, -/node_modules/ 格式
想在 src/ 里搜但跳过 src/generated/?不能只写 -generated/,得用完整相对路径前缀:src/, -/src/generated/。但更常用的是从项目根排除,格式必须严格:
- 开头必须是
.,表示当前项目根目录 - 每个排除项以
-开头、以/结尾:-/dist/✅,-dist/❌,-/dist❌ - 多规则用英文逗号分隔,逗号后必须加空格:
., -/dist/, -*/__pycache__/✅ -
-/node_modules/只排除根级;要匹配所有层级(如packages/foo/node_modules/),得写-*/node_modules/ - 不支持
**/node_modules/,也不支持正则
folder_exclude_patterns 不控制搜索,别往用户设置里硬塞
很多人在 Preferences → Settings – User 里加 "folder_exclude_patterns": ["node_modules"],结果搜索照进 node_modules——这不是配置错了,是根本用错了地方。folder_exclude_patterns 只影响索引和侧边栏显示,不影响 Find in Files 的物理扫描。
- 它只在
.sublime-project文件的folders数组内生效,且必须嵌套在每个path对象里 - 值是纯文件夹名字符串数组:
"node_modules"✅,"node_modules/"❌,"../node_modules"❌(除非path指向子目录) - 用户设置里加这个,对全局搜索完全无效,还可能误伤其他项目
- 真正该放全局的,只有无关通用项:
".git"、".DS_Store"、"*.log"
最易被忽略的一点:Where 框的语法看似简单,但空格、斜杠、点号的位置错一个,搜索就静默失效——它不会报错,只是返回空结果,你会以为代码没了,其实是路径没命中。

















