首页 > 开发工具 > VSCode > 正文

VSCode 的搜索排除(Search: Exclude Settings)功能如何忽略不必要的文件?

狼影
发布: 2025-09-21 13:22:01
原创
310人浏览过
正确配置search.exclude和files.exclude可提升VSCode搜索效率与结果聚焦性,前者控制全局搜索范围,后者影响资源管理器显示,需根据项目需求在用户或工作区设置中通过glob模式精准排除文件。

vscode 的搜索排除(search: exclude settings)功能如何忽略不必要的文件?

VSCode的搜索排除功能,本质上是通过配置特定的文件和文件夹模式,来告诉编辑器在执行全局搜索时应该忽略哪些内容。这主要是通过修改工作区或用户设置中的

search.exclude
登录后复制
files.exclude
登录后复制
配置项来实现的。这样做不仅能显著提升搜索效率,减少不必要的等待时间,还能让搜索结果更加聚焦,避免被大量的构建产物、依赖文件或版本控制元数据所干扰,从而提高开发体验。

解决方案

要有效地忽略VSCode搜索中不必要的文件,核心在于正确配置

search.exclude
登录后复制
files.exclude
登录后复制
这两个设置。它们可以分别在用户设置(全局生效)或工作区设置(仅当前项目生效)中进行配置。我个人建议,对于项目特有的排除规则,尽量使用工作区设置,这样团队成员之间也能共享这些配置,保持一致性。

配置步骤:

  1. 打开设置:

    • 通过快捷键
      Ctrl + ,
      登录后复制
      (Windows/Linux) 或
      Cmd + ,
      登录后复制
      (macOS) 打开VSCode设置。
    • 或者通过菜单
      文件 (File)
      登录后复制
      >
      首选项 (Preferences)
      登录后复制
      >
      设置 (Settings)
      登录后复制
  2. 搜索配置项:

    • 在设置搜索框中输入
      search.exclude
      登录后复制
      files.exclude
      登录后复制
  3. 添加排除规则:

    • 通过UI界面: 你会看到一个列表,点击“添加模式”按钮,输入你想要排除的文件或文件夹的glob模式。例如,要排除

      node_modules
      登录后复制
      文件夹,可以输入
      **/node_modules
      登录后复制

    • 通过

      settings.json
      登录后复制
      文件(推荐):

      • 在设置界面右上角有一个“打开设置 (JSON)”图标,点击它会打开你的
        settings.json
        登录后复制
        文件。
      • 如果你想为当前工作区配置,可以在项目根目录下创建一个
        .vscode
        登录后复制
        文件夹,并在其中创建
        settings.json
        登录后复制
        文件。
      • settings.json
        登录后复制
        中添加或修改以下结构:
      {
          "files.exclude": {
              "**/.git": true,
              "**/.svn": true,
              "**/.DS_Store": true,
              "**/node_modules": true,
              "**/bower_components": true,
              "**/*.log": true,
              "**/build": true
          },
          "search.exclude": {
              "**/node_modules": true,
              "**/bower_components": true,
              "**/.git": true,
              "**/.vscode": true,
              "**/dist": true,
              "**/*.min.js": true,
              "**/*.map": true
          },
          // 还可以结合使用 .gitignore 文件
          "search.useIgnoreFiles": true
      }
      登录后复制

      true
      登录后复制
      表示启用该排除规则。

Glob模式简介:

  • *
    登录后复制
    :匹配路径段中的零个或多个字符,但不包括路径分隔符。
  • **
    登录后复制
    :匹配任意数量的路径段(包括零个),常用于匹配任意深度的目录。
  • ?
    登录后复制
    :匹配路径段中的一个字符。
  • [abc]
    登录后复制
    :匹配路径段中的单个字符,可以是a、b或c。
  • {pattern1,pattern2}
    登录后复制
    :匹配任何一个模式。

理解这些模式是高效配置排除规则的关键。

files.exclude
登录后复制
search.exclude
登录后复制
有什么区别?什么时候用哪个?

说实话,刚开始接触VSCode的时候,我个人也经常会把这两个搞混,觉得它们功能差不多。但深入理解后,你会发现它们各有侧重,虽然有交叉,但目的还是不太一样。

files.exclude
登录后复制
主要影响的是VSCode的文件资源管理器视图。当你设置了
files.exclude
登录后复制
规则后,匹配到的文件或文件夹就不会在左侧的文件资源管理器中显示了。这对于隐藏一些不常直接操作,但又必须存在的文件(比如
.git
登录后复制
文件夹、
node_modules
登录后复制
、各种构建输出目录)非常有用,能让你的文件树保持整洁,减少视觉上的干扰。此外,它也会影响一些文件相关的操作,比如快速打开(Go to File)。

search.exclude
登录后复制
顾名思义,它的核心作用是告诉VSCode在执行全局搜索
Ctrl+Shift+F
登录后复制
Cmd+Shift+F
登录后复制
)时,应该忽略哪些文件和文件夹。这意味着,即使某个文件在文件资源管理器中是可见的(因为没有被
files.exclude
登录后复制
排除),但如果它被
search.exclude
登录后复制
规则匹配了,那么全局搜索的结果中就不会包含这个文件里的内容。这在处理大型项目时尤其重要,比如我们通常不希望在
node_modules
登录后复制
dist
登录后复制
目录中搜索代码,因为那里通常是第三方库或编译后的代码,与我们的业务逻辑无关,搜索它们只会浪费时间并产生大量噪音。

总结一下我的看法:

Alkaid.art
Alkaid.art

专门为Phtoshop打造的AIGC绘画插件

Alkaid.art 153
查看详情 Alkaid.art
  • 如果你想让某个文件或文件夹不在文件资源管理器中显示,同时也不希望在全局搜索中找到它,那么同时配置
    files.exclude
    登录后复制
    search.exclude
    登录后复制
    是比较稳妥的做法。例如
    node_modules
    登录后复制
  • 如果你只是想让某个文件或文件夹不出现在全局搜索结果中,但仍然希望它在文件资源管理器中可见(比如一些日志文件,或者某些配置目录),那就只配置
    search.exclude
    登录后复制
  • 反之,如果某个文件只是不希望在文件资源管理器中看到,但偶尔可能需要全局搜索到它的内容(这种情况比较少见,但也不是没有),那就只配置
    files.exclude
    登录后复制

通常情况下,

search.exclude
登录后复制
的范围会比
files.exclude
登录后复制
更广一些,因为它更专注于提升搜索效率和结果的相关性。

如何配置 VSCode 的
search.exclude
登录后复制
规则?有哪些常用的排除模式?

配置

search.exclude
登录后复制
规则,主要就是编辑
settings.json
登录后复制
文件,然后根据需求填入glob模式。理解glob模式是关键,它允许我们用简洁的方式匹配复杂的文件路径。

配置方法:

如前面提到的,最直接有效的方式是打开你的用户或工作区

settings.json
登录后复制
文件,然后添加或修改
search.exclude
登录后复制
对象。

{
    "search.exclude": {
        "**/node_modules": true,
        "**/bower_components": true,
        "**/.git": true,
        "**/.vscode": true,
        "**/dist": true,
        "**/build": true,
        "**/*.log": true,
        "**/*.map": true,
        "**/*.min.js": true,
        "**/*.bak": true,
        "src/assets/images": true, // 排除特定路径下的图片文件夹
        "temp/**": true, // 排除temp目录及其所有子文件
        "*.lock": true // 排除所有.lock文件
    }
}
登录后复制

常用的排除模式及其解释:

  1. **/node_modules
    登录后复制
    : 这是最常见的一个。它会排除项目根目录下以及任何子目录中的
    node_modules
    登录后复制
    文件夹及其所有内容。
    **
    登录后复制
    在这里表示匹配任意层级的目录。
  2. **/bower_components
    登录后复制
    : 类似于
    node_modules
    登录后复制
    ,用于前端项目的Bower依赖。
  3. **/.git
    登录后复制
    : 排除Git版本控制系统生成的
    .git
    登录后复制
    文件夹。通常我们不希望搜索到版本控制的元数据。
  4. **/.vscode
    登录后复制
    : 排除VSCode自身的工作区配置文件夹。这些文件通常与项目代码无关。
  5. **/dist
    登录后复制
    : 排除常见的项目构建输出目录,如Webpack、Rollup等打包后的代码。
  6. **/build
    登录后复制
    : 排除另一个常见的构建输出目录。
  7. **/*.log
    登录后复制
    : 排除所有
    .log
    登录后复制
    文件,因为日志文件通常内容庞大且不相关。
  8. **/*.map
    登录后复制
    : 排除JavaScript或CSS的Source Map文件。这些是调试用的,不是实际代码。
  9. **/*.min.js
    登录后复制
    : 排除所有压缩过的JavaScript文件。通常我们只关心未压缩的源码。
  10. **/*.bak
    登录后复制
    : 排除各种备份文件。
  11. temp/**
    登录后复制
    : 排除名为
    temp
    登录后复制
    的文件夹及其内部的所有内容,无论它在项目中的哪个位置。
  12. *.lock
    登录后复制
    : 排除项目根目录下所有
    .lock
    登录后复制
    文件,比如
    package-lock.json
    登录后复制
    (但通常我们会希望搜索到这个,所以具体情况具体分析)。
  13. src/assets/images
    登录后复制
    : 排除
    src/assets/images
    登录后复制
    这个特定路径下的文件夹。如果路径是绝对的,则不带
    **
    登录后复制

这些模式可以根据你的项目结构和需求进行灵活组合。我个人觉得,维护一个清晰的

search.exclude
登录后复制
列表,能让你的VSCode使用体验好很多,特别是当项目越来越大、文件越来越多的时候。

为什么我的
search.exclude
登录后复制
设置没有生效?排查常见问题。

遇到

search.exclude
登录后复制
不生效的情况,我通常会从几个方面去排查,这几乎成了我的肌肉记忆了。这不像代码报错那样直接,但一般也逃不出这几点。

  1. 作用域问题:用户设置 vs. 工作区设置

    • 这是最常见的问题。你可能把排除规则加到了用户设置(全局生效)里,但项目里又有更具体的、冲突的工作区设置。工作区设置会覆盖用户设置。
    • 反过来也一样,如果你的规则在工作区设置里,但你期望它在所有项目里都生效,那它自然不会在其他项目里起作用。
    • 排查方法: 检查你的
      .vscode/settings.json
      登录后复制
      (工作区设置)和全局的
      settings.json
      登录后复制
      ,看看规则是不是被覆盖了,或者放错了地方。
  2. Glob模式语法错误或不精确

    • Glob模式有时候挺微妙的,一个
      *
      登录后复制
      **
      登录后复制
      的区别可能就导致完全不同的结果。
    • 比如,你可能想排除所有
      dist
      登录后复制
      文件夹,写成了
      dist
      登录后复制
      ,但如果
      dist
      登录后复制
      在子目录里,比如
      src/dist
      登录后复制
      ,那
      dist
      登录后复制
      就匹配不到了,应该用
      **/dist
      登录后复制
    • 排查方法: 仔细检查你的模式,确保它能准确匹配你想要排除的文件或文件夹。可以尝试在一些在线的glob模式测试工具上验证一下。
  3. JSON格式错误

    • settings.json
      登录后复制
      本质上是一个JSON文件。少了逗号,多了括号,或者键值对格式不对,都会导致整个设置文件解析失败,自然你的排除规则也就不会生效了。
    • 排查方法: VSCode通常会对JSON语法错误有红色波浪线提示。仔细检查这些提示,确保JSON格式是正确的。
  4. search.useIgnoreFiles
    登录后复制
    设置的影响

    • VSCode有一个
      search.useIgnoreFiles
      登录后复制
      的设置,当它设为
      true
      登录后复制
      时,VSCode会尊重
      .gitignore
      登录后复制
      .ignore
      登录后复制
      等文件中的排除规则。
    • 如果你的
      .gitignore
      登录后复制
      文件里已经排除了某些内容,而你的
      search.exclude
      登录后复制
      又试图排除同样的内容,或者你的
      search.exclude
      登录后复制
      .gitignore
      登录后复制
      冲突,可能会造成一些困惑。
    • 排查方法: 检查你的
      .gitignore
      登录后复制
      文件,并理解
      search.exclude
      登录后复制
      search.useIgnoreFiles
      登录后复制
      是如何协同工作的。通常,
      search.exclude
      登录后复制
      可以看作是在
      .gitignore
      登录后复制
      基础上的一个补充或覆盖。
  5. VSCode缓存或需要重启

    • 虽然VSCode通常能实时应用设置变更,但偶尔也会遇到需要重启编辑器才能完全生效的情况,尤其是在对
      settings.json
      登录后复制
      进行了较大改动之后。
    • 排查方法: 尝试关闭VSCode,然后重新打开项目。
  6. 文件或文件夹确实存在,但被其他机制隐藏

    • 这虽然不是
      search.exclude
      登录后复制
      不生效的问题,但可能会让你误以为是。例如,某些文件可能被Git忽略了,或者被操作系统的隐藏属性标记了,导致你找不到,进而以为搜索也排除了。
    • 排查方法: 确认你要搜索的文件或文件夹确实存在,并且没有被其他系统层面的机制隐藏。

在我看来,遇到这种问题,一步步地排除是最有效的。从最常见的JSON错误和作用域问题开始,然后检查模式,最后再考虑重启或

useIgnoreFiles
登录后复制
的影响。

以上就是VSCode 的搜索排除(Search: Exclude Settings)功能如何忽略不必要的文件?的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号