files.exclude 是隐藏文件的唯一可靠方式,所有资源管理器中的隐藏控制均由其驱动,插件仅辅助生成规则;需正确配置工作区、用户级和语言专属三处 settings.json,并同步设置 search.exclude 才能彻底屏蔽文件。

files.exclude 是隐藏文件的唯一可靠方式
VSCode 没有“插件管理隐藏文件”这回事——所有对资源管理器(左侧文件树)中文件/文件夹的隐藏控制,都只由 files.exclude 配置驱动。所谓“插件”,比如 Hide Files、File Utils 等,本质只是提供图形界面或快捷操作来帮你写 files.exclude 规则,底层仍走同一套机制。依赖插件做隐藏,反而容易引入兼容性问题或行为不一致。
为什么插件推荐的规则常失效?
插件生成的排除规则若没写对 glob 语法,或没落在正确配置层级,就会白忙一场:
-
files.exclude路径必须相对于工作区根目录,不是当前文件夹路径,也不是绝对路径 - 写成
"node_modules"只隐藏根目录下的node_modules;要递归隐藏得用"**/node_modules" - 插件若默认往用户级
settings.json写规则,而你打开的是已有.vscode/settings.json的项目,那它的规则直接被覆盖 - 某些插件会误加引号或正则符号(如
^\.env$),但files.exclude只认 minimatch glob,不支持正则
真正该关注的三个配置位置
别被插件 UI 带偏,手动确认以下三处是否按需设置:
- 工作区设置(
.vscode/settings.json):团队项目首选,提交到 Git,确保所有人看到一致的文件树 - 用户设置(
Preferences: Open User Settings (JSON)):适合全局通用规则,如"**/*.log"、"**/__pycache__/**" - 语言专属设置(
"[javascript]": { "files.exclude": { "lib/**": true } }):注意语言标识符全小写,[JavaScript]无效
search.exclude 和 files.exclude 必须分开配
这是最容易漏掉的一环:插件通常只动 files.exclude,但你在 Ctrl+Shift+F 全局搜索时仍会扫到那些“看不见”的文件——因为 search.exclude 是独立配置项,和 files.exclude 完全不联动。
例如想彻底屏蔽 .pyc:
- 资源管理器里消失 → 往
files.exclude加"**/*.pyc": true - 全局搜索里也跳过 → 往
search.exclude加同样规则 - GitLens、ESLint 等插件仍可能读取被隐藏路径 → 它们不遵守
files.exclude,属正常行为,别误以为配置失败
改完 files.exclude 后,如果已展开的父目录没自动收起,手动折叠再展开一次即可,无需重启 VS Code —— 但若整个资源管理器变空,大概率是写了 "**": true 这类宽泛规则,得立刻删掉。











