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

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

狼影
发布: 2025-09-21 13:22:01
原创
324人浏览过
正确配置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
登录后复制
目录中搜索代码,因为那里通常是第三方库或编译后的代码,与我们的业务逻辑无关,搜索它们只会浪费时间并产生大量噪音。

总结一下我的看法:

Find JSON Path Online
Find JSON Path Online

Easily find JSON paths within JSON objects using our intuitive Json Path Finder

Find JSON Path Online 193
查看详情 Find JSON Path Online
  • 如果你想让某个文件或文件夹不在文件资源管理器中显示,同时也不希望在全局搜索中找到它,那么同时配置
    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
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

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