必须以/或/开头写glob模式才生效,如/src/**匹配所有层级src目录,node_modules等无前缀写法无效。

搜索框底部的「files to include/exclude」怎么填才生效
直接在全局搜索(Ctrl+Shift+F)面板底部输入路径规则,是最快、最灵活的临时限定方式。但它不是随便写就能用——必须用 glob 模式,且以 **/ 或 / 开头,不能用相对路径或 Windows 反斜杠。
-
**/src/**:匹配所有层级下的src目录(推荐),比如packages/core/src和apps/web/src都会被包含 -
/src/**:只匹配项目根目录下的src,子文件夹里嵌套的src不算 -
**/api/*.ts:只搜任意位置下api目录里的.ts文件(注意后缀要显式写) - 多个规则用英文逗号分隔:
**/packages/core/**,**/packages/utils/** - 别写
node_modules或./dist——这些会被当字面量匹配文件名,完全无效
search.exclude 为什么加了还搜到被排除的目录
常见现象是改完 .vscode/settings.json 里的 "search.exclude",重启搜索面板后仍看到 dist/ 下的结果。这不是配置写错了,而是 VSCode 的索引缓存没刷新。
- 真正起作用的 pattern 是
"**/dist": true(不用加/**,VSCode 默认递归跳过整个目录) - 修改后必须重载窗口:
Ctrl+P→ 输入workbench.action.reloadWindow回车 - 或者手动删掉
.vscode/.search文件夹(如果存在),强制重建索引 - 检查是否被插件干扰:某些 Git 插件或 Workspace Trust 设为“受限”时,会绕过
search.exclude
files.exclude 和 search.exclude 到底有什么区别
这两个配置看起来像双胞胎,但干的事完全不同,混用会导致预期外的行为。
-
files.exclude:只影响左侧资源管理器的显示,隐藏文件/文件夹,对搜索过程 完全无影响 -
search.exclude:专用于全局搜索(Ctrl+Shift+F),告诉搜索服务“别扫这里”,能显著提速 - 比如你设了
"**/*.log": true在files.exclude里,日志文件在侧边栏消失了,但搜关键词时仍会命中它们;得加到search.exclude才真正过滤掉 - 两者都支持
**/,但search.exclude不接受when条件语法(那是files.exclude独有的)
monorepo 里怎么精准锁定某个 package 搜索
在 packages/my-app 里改代码,但全局搜 useAuth 却冒出一堆 packages/cli 或 node_modules 的结果——这时候不能靠打开子文件夹为根目录,也不用切工作区。
- 在搜索框底部
files to include填:**/packages/my-app/** - 如果还想排除测试文件,再在
files to exclude填:**/packages/my-app/__mocks__/**,**/*.spec.ts - 注意:include 和 exclude 是叠加生效的,不是“先 include 再 filter”,所以 exclude 规则依然有效
- 这种写法对多根工作区也适用,每条
**/规则都基于各自工作区根路径解析
最常被忽略的是通配符前缀和索引刷新——漏掉 **/ 或不重载窗口,配置就等于白写。实际项目里,一个 **/node_modules 就能让搜索快 5 倍以上,但前提是它真被跳过了。











