files.exclude是唯一正解,用于彻底隐藏__pycache__、.DS_Store等文件;search.exclude仅影响搜索结果,不控制资源管理器显示。

files.exclude 是唯一正解,别碰 search.exclude
想让 __pycache__、.DS_Store、.env.local 这类临时文件彻底从左侧资源管理器消失,必须改 files.exclude。它和 search.exclude 完全无关——后者只影响 Ctrl+Shift+F 搜索结果,改了它侧边栏照样乱糟糟。
写对 glob 模式才能生效,常见写法对照表
VSCode 的排除规则用的是 glob 语法,不是正则,也不是相对路径。写错一个符号,整个文件树可能变空。
-
"**/__pycache__": true→ 正确:匹配所有层级的__pycache__目录 -
"__pycache__": true→ 错误:只匹配项目根目录下的同名文件夹,子目录里的不会隐藏 -
"**/.DS_Store": true→ 正确:macOS 系统生成的隐藏文件 -
"*.log": true→ 错误:缺少**/前缀,只会匹配根目录下 .log 文件,深层日志不生效 -
"**/*.log": true→ 正确:递归隐藏所有 .log 文件 -
"**/node_modules/**": true→ 推荐:比"**/node_modules"更稳妥,避免某些插件读取失败
工作区设置优先于用户设置,团队项目必须放 .vscode/settings.json
如果你在全局用户设置里加了 files.exclude,但同事打开项目时还是看到一堆 dist 和 out,大概率是没配工作区级配置。正确做法:
- 在项目根目录创建
.vscode文件夹 - 新建
.vscode/settings.json - 填入:
{ "files.exclude": { "**/__pycache__": true, "**/.pytest_cache": true, "**/*.pyc": true, "**/dist": true } } - 这个配置会覆盖用户设置,且随 Git 提交,新人 clone 后开箱即用
改完不生效?先关掉 GitLens、ESLint 这类插件再验证
有些扩展(比如 GitLens)会主动扫描被 files.exclude 隐藏的文件,然后在“Git Changes”或“Problems”面板里重新拉出来显示。这容易让人误以为配置失效。真实情况是:
-
files.exclude对资源管理器生效是即时的(无需重启) - 但部分插件缓存了旧文件列表,需手动右键项目根 →
Refresh - 若仍看到被隐藏的文件,先禁用 GitLens、ESLint、Prettier 等扩展,再检查资源管理器是否清爽——确认是插件干扰后,再单独查它们的文档看是否有对应开关
真正容易被忽略的是:glob 模式中 ** 的语义和路径前缀强绑定,不是“通配一切”,而是“匹配零个或多个目录”。写成 "**/*" 或 "**" 这种宽泛模式,会导致资源管理器空白——它不是报错,是真把所有文件都过滤掉了。


















