search.exclude 只支持路径 glob 匹配(如 "*.py"),不识别语言;按语言过滤应使用搜索框中的 lang:typescript 等前缀,配合 files to include 路径限定,且需安装对应语言扩展。

search.exclude 不能按语言过滤,它只认路径
VSCode 的 search.exclude 配置项不识别文件类型或语言,只接受 glob 路径模式。你写 "*.py": true 或 "**/*.go": true 是合法的,但它起作用的原因不是“排除 Python 文件”,而是“排除所有以 .py 结尾的路径”。换句话说,它靠后缀匹配,不是靠语言服务识别。
常见误解是以为配了 "**/node_modules/**": true 就自动跳过其中的 TypeScript 文件——其实它跳过的是整个目录,跟里面是什么语言无关。
-
search.exclude值必须是布尔值true,写成"*.ts": "true"或"*.ts": 1会静默失效 - 想排除某类语言的所有文件,得列全后缀:
"**/*.js": true, "**/*.jsx": true, "**/*.ts": true, "**/*.tsx": true - 如果项目混用
.mjs、.cjs等,漏掉就仍会出现在结果里
真正按语言过滤要用 files to include + lang: 前缀
在全局搜索面板(Ctrl+Shift+F)中,最准的语言限定方式是组合使用:
- 在 “files to include” 输入框填路径范围,比如
src/**或backend/** - 在搜索内容框直接加
lang:typescript、lang:python、lang:javascript等前缀 - 多个语言用空格连接:
lang:typescript lang:javascript
注意:lang: 前缀依赖 VS Code 内置语言识别或已启用对应扩展。例如没装 Rust 插件时,lang:rust 不生效;Go 文件若后缀是 .go 但没装 Go 扩展,也可能无法识别。
错误写法:type:ts(VS Code 不支持 type: 这种简写)、language:py(必须用 lang:)。
为什么不用 type:javascript 而用 lang:javascript?
type:javascript 是旧版语法,2025 年底起已被弃用,现在只认 lang:。实测中:
为跨境电子商务生成多语言、SEO 优化的产品描述。支持英语、西班牙语、俄语和阿拉伯语,并针对不同搜索引擎(Google / Bing、Yandex、中东市场)进行专项 SEO 优化。适用于以下场景:用户需为国际市场创建符合 SEO 规范的产品文案、批量生成产品描述,或针对特定搜索引擎及区域用户偏好优化内容。
-
lang:javascript✅ 匹配.js、.mjs、.cjs,且受 JS 语言服务器影响(比如能跳过注释里的字符串) -
lang:typescript✅ 同时覆盖.ts和.tsx,但不会误抓.d.ts(除非你显式包含) -
lang:json❌ 对.jsonc无效,得单独加**/*.jsonc到 include 或 exclude
性能上,lang: 会触发语言服务预扫描,比纯 glob 更慢一点,但在中小型项目里感知不强;大型 monorepo 中,建议先用 **/packages/frontend/** 锁定路径,再叠 lang:typescript,避免全量扫描。
临时切语言搜索的快捷操作
不必每次重输 lang: —— 搜索面板右上角 ⋯ → «Save Search»,存一个叫 “TS only” 的方案,内容为:
lang:typescript **/src/** !**/node_modules/**
下次点一下就能加载。这个方案优先级高于 search.exclude,且关闭面板后不残留。
容易被忽略的一点:如果你在搜索框里写了 lang:go,但结果里仍有 Python 文件,大概率是 “files to include” 没填或填错了路径前缀(比如只写了 go 而非 **/*.go),导致白名单逻辑失效,整个工作区又被拉回来了。










