登录
推荐 文章 Go 技术 课程 下载 专题 AI
首页 >  文章 >  软件教程

VS Code 搜索怎样排除生成目录

来源:17golang原创

时间:2026-11-14 20:25:58 380浏览 收藏

项目一旦生成了 dist、build 或 coverage,VS Code 的跨文件搜索就可能把源码和构建产物混在一起。最稳妥的做法是:临时排查时在搜索视图填写 Files to exclude,长期使用则把规则写进工作区的 settings.json。search.exclude 负责搜索规则,files.exclude 还会影响资源管理器显示,而且搜索默认会继承它的排除项。

官方地址:https://code.visualstudio.com/

本文只处理“搜索怎样排除生成目录”这个问题,不把生成目录删除,也不改变构建工具本身的输出位置。

先区分三种排除入口

VS Code 里有三个容易混淆的入口:

入口作用适合场景
Files to exclude只影响当前搜索操作临时排查、一次性跳过大目录
search.exclude为工作区设置搜索排除规则不想让构建产物进入搜索结果
files.exclude控制资源管理器显示,也会被搜索继承项目中始终隐藏生成目录

如果只是今天排查一个问题,先用搜索视图的排除框;如果每次打开项目都需要相同规则,再写工作区设置。这样不会为了临时搜索修改团队共享配置。

在搜索视图临时排除生成目录

按 ⇧⌘F(Windows/Linux 为 Ctrl+Shift+F)打开跨文件搜索,输入要查找的词。搜索框下方默认只显示较少选项,点击省略号展开 Toggle Search Details,再找到 Files to exclude。

  1. 在 Files to exclude 输入 **/dist/**, **/build/**。
  2. 确认 Use Exclude Settings and Ignore Files 处于开启状态,让当前搜索同时遵守设置和忽略文件。
  3. 重新执行搜索,结果列表应保留 src 等源码目录,而不再列出 dist、build 下的同名内容。
VS Code 搜索视图中填写 Files to exclude 并排除 dist 和 build 的原创界面说明图
图1:操作示意图,展示在搜索视图的 Files to exclude 中临时排除生成目录后的结果状态。

这里的排除框只服务当前搜索界面。清空输入或重新打开另一个搜索任务后,若没有工作区规则,生成目录仍可能回来。

用工作区 settings.json 固化规则

需要长期排除时,打开命令面板,执行 Preferences: Open Workspace Settings (JSON)。VS Code 会把工作区设置放在项目根目录的 .vscode/settings.json。下面的 JSON 可以直接作为起点:

{
  "search.exclude": {
    "**/dist/**": true,
    "**/build/**": true
  },
  "files.exclude": {
    "**/coverage/**": true
  }
}

JSON 代码块保持严格格式,所以不在其中加入注释。search.exclude 让搜索默认跳过 dist 与 build;files.exclude 让资源管理器隐藏 coverage,同时搜索会继承这个排除项。若团队不希望资源管理器隐藏目录,可以只保留 search.exclude。

VS Code 设置界面展示 search.exclude 和 files.exclude 的原创界面说明图
图2:操作示意图,展示工作区设置中分别配置 search.exclude 与 files.exclude 后的结果状态。

glob 写法要按入口区分

最常见的“不生效”不是设置名写错,而是通配符写在了不适用的位置。VS Code 官方文档特别说明,搜索视图的 glob 规则和 settings.json 中的规则不同:

  • 写在 Files to exclude 时,搜索视图会假定路径可以从任意层级匹配,输入 dist 往往就能覆盖工作区中的同名目录。
  • 写在 search.exclude 或 files.exclude 时,建议用 **/dist/** 覆盖嵌套目录;如果只想排除工作区根目录,可以写成 ./dist 附近的明确路径规则。
  • 多个模式可以用逗号分隔,但复杂项目更适合拆成多行 JSON,后续修改不容易漏掉目录。

如果生成目录名称本身可能出现在源码文件名中,优先写目录边界,例如 **/build/**,不要只写一个过宽的文本模式。

用对照搜索确认规则真的生效

配置保存后,不要只看资源管理器里目录是否消失,最好做一次对照搜索:

  1. 选择一个确定同时存在于源码和生成产物中的词,例如项目自己的函数名。
  2. 在搜索视图展开详细选项,检查 Use Exclude Settings and Ignore Files 没有被关闭。
  3. 观察结果:源码文件仍应出现,dist、build 和 coverage 下的结果应按配置消失。
  4. 如果需要临时查看产物,再在 Files to include 中指定生成目录,或暂时关闭排除规则;查看完恢复开关即可。

这种验收方式比单纯数结果条目更可靠:源码仍有命中,说明搜索没有被整体禁用;生成目录没有命中,说明排除范围确实被应用。

规则不生效时按这个顺序排查

  1. 看设置范围:确认打开的是 Workspace,而不是 User;工作区设置只对当前项目生效。
  2. 看搜索开关:如果关闭了 Use Exclude Settings and Ignore Files,search.exclude、files.exclude 和忽略文件都可能不参与这次搜索。
  3. 看路径层级:settings.json 中优先使用 **/目录名/**,不要把搜索框写法原样复制到所有位置。
  4. 看工作区根目录:多根工作区需要分别确认规则作用于哪个根目录,路径是相对于对应工作区根目录计算的。
  5. 看是否存在例外:以 ! 开头的例外规则可能重新放开某个子目录;如果项目设置继承了团队配置,也要检查是否有更具体的例外。

最后记住这套最小选择

临时搜索用 Files to exclude;只想让搜索默认忽略生成目录,用 search.exclude;希望资源管理器也隐藏并让搜索继承,再加 files.exclude。配置后用“源码仍命中、生成目录不命中”的对照搜索验收,基本就能避免把设置问题误判成搜索故障。

相关问题

  • 为什么配置了 files.exclude,搜索仍然能看到生成目录?先检查搜索视图的 Use Exclude Settings and Ignore Files 是否关闭,再确认当前窗口打开的是含有该 .vscode/settings.json 的工作区。
  • 搜索框里的排除规则能永久保存吗?它更适合当前操作;需要稳定复用时,把规则迁移到工作区的 search.exclude。
  • 怎样只排除根目录的 dist?在工作区设置中写面向根目录的明确模式,并用一次同名子目录对照搜索确认范围。
声明:本文转载于:17golang原创 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>