直接结论:用「文件中包括」输入.vue,.ts或src//.{vue,ts}比依赖search.exclude更快更可控;常见搜不到.vue是因search.exclude规则过激(如/node_modules/**未覆盖pnpm嵌套结构),应清空排除框验证,并确保通过open folder打开整个项目。

直接结论:用「文件中包括」输入 *.vue、*.ts 或 src/**/*.ts,比依赖 search.exclude 更快、更可控。
为什么 *.vue 有时搜不到?检查「文件中排除」是否误杀路径
最常见的情况不是通配符写错,而是 search.exclude 里写了太激进的规则,比如 **/node_modules/**,但项目用了 pnpm 的嵌套 node_modules/.pnpm/xxx@x.x.x/node_modules 结构——VSCode 的 glob 默认不递归匹配双星号里的双星号,导致部分子目录下的 .vue 根本没被扫描。
- 先清空「文件中排除」框,看能否搜到;能说明是排除规则冲突
- 确保通过
File > Open Folder打开整个项目,而非只打开几个文件标签页 -
*.vue不会匹配MyComponent.vue.js这类构建产物,这是设计行为,不是 bug
同时搜 .vue 和 .ts:逗号分隔,不是用 or 或正则
VSCode 的「文件中包括」支持用英文逗号分隔多个模式,语法简单且优先级高于排除规则:
- 搜两类:输入
*.vue,*.ts - 限定在
src下:输入src/**/*.{vue,ts}(注意花括号需手动输入,不是自动补全) - 别写成
*.vue or *.ts或/\.vue$|\.ts$/—— 这里不接受正则或逻辑运算符
想排除 .test.ts 和 .d.ts?减号前缀比单独配置 search.exclude 更轻量
搜 interface User 时,user.d.ts 和 user.test.ts 都会命中,但你通常只关心实现逻辑。这时不用改全局设置,直接在「文件中包括」里写:
src/**/*.ts,-**/*.test.ts,-**/*.d.ts- 注意:
**/*.test.ts能匹配src/utils/test/helpers.test.ts,而*.test.ts只匹配根目录下的同名文件 - 减号必须紧贴模式前,中间不能有空格:
-**/*.test.ts✅,- **/*.test.ts❌
长期用 Vue + TS?把常用过滤固化进工作区 .vscode/settings.json
每次手动输 *.vue,*.ts 很累,尤其当你每天都在改组件和工具函数。与其依赖临时输入,不如让 VSCode 记住习惯:
- 在项目根目录下创建
.vscode/settings.json - 加这一行:
"search.include": "**/*.{vue,ts}" - 注意:
search.include是工作区级配置,不会影响其他项目;它比用户级search.exclude优先级更高,也更聚焦
真正容易被忽略的是:这个配置只在「全局搜索」生效,不影响 Ctrl+P 文件名搜索或符号跳转 —— 它们走的是不同索引机制,别指望一个设置管全部。











