search.include 比搜索框输入更稳定,因其为白名单机制、支持 ${workspaceFolder} 展开、路径基准明确;错误写法缺根路径,正确写法须用 "${workspaceFolder}/src/**": true,Windows 必用正斜杠。

直接在 search.include 里写白名单路径,比在搜索框底部填 src/** 更可靠——后者常因缺少根上下文而失效,且不保存、不复用。
为什么 search.include 比搜索框输入更稳
search.include 是白名单机制,只扫描列出的路径,其他一律跳过;它支持 ${workspaceFolder} 变量展开,路径基准明确,不会因当前打开文件夹位置不同而错配。
- 错误写法:
"src/**": true—— 缺少根路径,VS Code 当作相对路径处理,实际匹配失败 - 正确写法:
"${workspaceFolder}/src/**": true—— 明确锚定到工作区根 - 多目录场景:要同时搜
src和lib,必须都列出来,不能靠**/src/**跨层级自动发现 - Windows 用户注意:路径分隔符必须用正斜杠
/,\src\**或src\**全部无效
search.exclude 怎么写才真正生效
search.exclude 的键是 glob 模式,值为 true 表示排除;它只对 Ctrl+Shift+F 生效,不影响资源管理器显示(那是 files.exclude 的事)。
- 排除任意层级的
node_modules:写"**/node_modules": true,不是"node_modules" - 排除整个文件夹就写
"dist": true,不用加/**—— VS Code 默认递归 - 想搜
node_modules?不能删配置项,得显式写"**/node_modules": false - 改完必须重载窗口(
Ctrl+P→workbench.action.reloadWindow)或删.vscode/.search文件夹,否则索引缓存会让排除“失灵”
临时过滤 vs 永久配置,别混用
搜索面板底部的「文件中排除」输入框(如填 **/test/**)是临时规则,每次搜索都要重输,且优先级低于 search.include。如果你已配了 search.include,这里填的内容基本被忽略。
- 适合快速试搜:比如临时加
!file:*.spec.ts跳过测试文件 - 不适合长期维护:规则不保存、不共享、不支持变量
- 协作项目建议统一写进
.vscode/settings.json,提交到仓库,避免每人手动配 - 不要把
search.exclude写进tsconfig.json或package.json—— VS Code 根本不读这些文件里的搜索配置
最易被忽略的是缓存和路径基准:改了 search.exclude 却还搜出被排除的文件,八成是没重载窗口;写 packages/my-app/src/** 却没匹配上,大概率是忘了前面加 **/ 或漏了 ${workspaceFolder}。


















