VSCode中files.exclude控制资源管理器与搜索的文件显示,需用"**/.git":true等glob语法;search.exclude仅影响搜索;.gitignore仅作用于Git,不影响VSCode显示。

VSCode 不显示隐藏文件(比如 .git、.vscode、.env)和 .gitignore 过滤是两套完全独立的机制,混用会导致配置无效、界面仍显示、搜索仍命中——先明确这点,再动手改。
files.exclude 控制资源管理器是否显示文件夹
这是你“在左侧文件树里看不见 .git”的唯一有效方式。它只影响 VSCode 资源管理器和搜索面板的视觉展示,不干涉 Git 行为。
-
files.exclude的 glob 模式必须带**/前缀才能匹配所有层级,例如写成"**/.git": true,而不是".git"或"/.git" - 工作区设置(即项目根目录下
.vscode/settings.json)优先级高于用户全局设置,务必确认你编辑的是这个文件 - 常见推荐项可直接复制粘贴:
{ "files.exclude": { "**/.git": true, "**/.vscode": true, "**/.DS_Store": true, "**/*.log": true } } - 改完保存后立即生效,无需重启或刷新;但如果之前已打开过该文件夹,可能需手动折叠再展开一次才能消失
search.exclude 控制全局搜索是否包含某些路径
你在 Ctrl+Shift+F 里搜代码时,默认会跳过 .git 和 node_modules,但不会自动跳过你自定义的隐藏文件(如 .env)。这时候得靠 search.exclude。
-
search.exclude和files.exclude写法一致,但作用域不同:前者只影响搜索结果,后者影响文件树 + 搜索 - 如果只想搜索时忽略
.env,但资源管理器里仍想看到它,就只配search.exclude,不碰files.exclude - 临时覆盖:在搜索面板右上角点击
→展开 Exclude 输入框,填入**/.*可一次性排除所有隐藏文件和文件夹(注意这仅对本次搜索生效)
.gitignore 只影响 Git,和 VSCode 显示无关
.gitignore 文件的作用范围非常明确:它只告诉 Git “别跟踪这些文件”,对 VSCode 的资源管理器、搜索、编辑器装饰(如 M/A/U 标记)全部无感。
- 即使你把
dist/加进.gitignore,VSCode 资源管理器照样显示它——除非你同步在files.exclude里也加一条"**/dist": true - 已跟踪的文件(比如曾经
git add .vscode过)再写进.gitignore也不会被忽略,必须执行git rm --cached .vscode才行 - VSCode 搜索默认会尊重
.gitignore规则(跳过被忽略的未跟踪文件),但这只是搜索的一个附加行为,不是显示控制
git.decorations.enabled 关掉文件状态标记
如果你真正想“不显示 Git 修改”,其实是想隐藏资源管理器里的 M/A/U 字母,以及编辑器左侧的绿色/蓝色变更条——这不是隐藏文件,而是关掉 Git 装饰。
- 设
"git.decorations.enabled": false即可彻底关闭所有 Git 状态视觉提示,包括文件树字母、编辑器边距竖条、甚至差异高亮 - 这个开关不影响任何 Git 功能:你照常能
git status、git commit、切换分支 - 注意依赖项:
editor.glyphMargin必须为true(默认值),否则即使开启装饰也没地方画竖条;如果关了字形边距,git.decorations.enabled就等于没开
最容易被忽略的一点:多根工作区(multi-root workspace)下,files.exclude 和 search.exclude 必须写在最外层 settings 对象里,不能塞进某个 folders 的子配置中,否则不生效。


















