必须填 才严格匹配项目配置的 folders 数组路径,前提是已保存 .sublime-project 文件; 不支持拼接,folder_exclude_patterns 需嵌套在每个 folders 对象内,exclude folders 栏与之无关。

Where 输入框必须填 <project></project>,不是 . 或空
填 . 只表示“当前打开的文件夹”,而项目可能由多个文件夹组成(比如通过 Add Folder to Project 添加),. 会漏掉其他 folders;留空则退化为 open_files 或触发不可控扫描。只有 <project></project> 才严格对应项目配置中 "folders" 数组定义的所有路径。
但前提是:项目必须已保存为 .sublime-project 文件。如果只是 Open Folder 后没保存,<project></project> 就等价于那个文件夹,起不到多目录聚合效果。
- 检查左下角状态栏是否显示路径,且菜单中
Project → Edit Project可点开 - 如果
Edit Project灰显,说明还没保存项目:先Project → Save Project As…,哪怕空内容也行 -
<project></project>不支持拼接,不能写成<project>/src</project>或<project>/**/*.ts</project>
项目配置里 folder_exclude_patterns 必须放在 folders 数组内部
这个设置不控制搜索行为,但它影响索引范围——间接决定哪些文件能被 <project></project> 涵盖。如果 node_modules 还在侧边栏里显示,<project></project> 搜索时仍可能扫到它(尤其当它被意外加入某个 path 下)。
正确结构是:
{
"folders": [
{
"path": ".",
"folder_exclude_patterns": ["node_modules", ".git", "dist"]
}
]
}
-
"folder_exclude_patterns"必须嵌套在每个folders对象里,平级写无效 - 值是纯字符串数组,不要加
/或通配符:"node_modules/"❌,"**/node_modules"❌ - Windows 路径分隔符统一用
/,不用\
别信右下角的 Exclude folders 栏,它和 <project></project> 无关
那个带竖线 | 分隔的输入框叫 Exclude folders,它只按文件夹名过滤,不看层级、不支持斜杠、不区分路径上下文。填 node_modules 会把所有叫这个名字的文件夹都跳过,包括 src/node_modules 和 packages/foo/node_modules——这和你只想限定工程边界的目标冲突。
它和 Where 是两套机制:一个粗粒度屏蔽名字,一个精确指定范围。混用容易导致预期外的遗漏或冗余。
- 想精准限于工程目录,只动
Where字段,填<project></project> -
Exclude folders栏适合临时加几个通用名,比如.DS_Store|.idea,但别指望它配合项目逻辑 - 填错大小写(如
Node_modules)在 macOS/Linux 下完全不匹配
快捷键冲突和索引延迟常让 <project></project> 像失效
搜不到结果,大概率不是 <project></project> 不工作,而是外部干扰:
- Mac 用户确认系统未占用
Cmd+Shift+F(Spotlight 默认绑定) - 刚添加新文件夹?右下角显示
Indexing…时,新文件不会出现在搜索结果中 - 替换后没按
Ctrl+K松开再按Ctrl+B(即Save All),改的内容只存在内存里 - 之前用过
Find in Files并手动填过路径,面板关闭后该值会被记住——下次打开仍沿用,需手动清空再填<project></project>
最隐蔽的坑是:项目已关闭但历史路径残留,Find in Files 有时会悄悄复用上次的物理路径,看起来像 <project></project> 失效。关掉所有窗口、重新 Open Project 最可靠。











