团队中有人能看到.env而有人看不到,是因为files.exclude优先级为工作区设置>用户设置,且只有提交到Git的.vscode/settings.json才生效;应删除宽泛规则"**/.*": true,改用精确排除项,并同步配置search.exclude。

为什么团队里有人能看到 .env,有人看不到?
因为 files.exclude 的生效优先级是:工作区设置 > 用户设置。只要项目根目录下存在 .vscode/settings.json,里面写的 files.exclude 就会覆盖每个人的本地配置——但前提是这个文件被提交到了 Git 里。很多人改了自己机器上的用户设置,却没意识到队友根本没加载那条规则。
- 团队成员各自在用户设置里删掉
"**/.*": true,毫无意义:它会被工作区配置直接忽略 - 真正起效的只有
.vscode/settings.json中显式声明的files.exclude - 如果该文件没被
git add和提交,新拉代码的人就等于“裸跑”,完全按 VSCode 默认规则过滤(即所有点文件全隐藏) - 别用 GUI 设置界面点来点去——它默认改的是用户设置,不是工作区
怎么写一个安全、可复用的 files.exclude 配置?
目标不是“全放开”或“全拦住”,而是明确哪些必须可见(如 .env)、哪些必须隐藏(如 .DS_Store),避免用宽泛规则误杀。
- 删掉默认的
"**/.*": true,换成精确项:"files.exclude": { "**/.DS_Store": true, "**/.git/**": true, "**/node_modules/**": true, "**/.vscode/**": true, "**/.idea/**": true, "**/dist/**": true, "**/build/**": true } - 想让
.env可见?不加任何排除规则即可——它本来就不在上面列表里 - 禁止用
"**/*": true或"**": true,会导致整个资源管理器空白 - 路径写法必须是 glob 模式,且全部相对于工作区根目录;
"node_modules": true只匹配根目录下的,子目录无效
search.exclude 必须同步配,否则搜不到 .env
files.exclude 控制左侧文件树,search.exclude 控制 Ctrl+Shift+F 能不能搜到——它们完全独立,改一个漏一个就会出现“看得见但搜不到”的情况。
- 不要假设两者自动同步;必须在同一个
.vscode/settings.json里显式写两遍 - 推荐写法:
"search.exclude": { "**/node_modules/**": true, "**/dist/**": true, "**/.DS_Store": true, "**/.git/**": true, "**/.vscode/**": true } - 不需要排除
.env,所以别写"**/.env": true;写了反而让它搜不到 - 远程开发(Remote-SSH)时,这个配置也必须落在远程主机的
.vscode/settings.json里,本地改无效
工作区配置被插件绕过怎么办?
某些扩展(比如 GitLens、ESLint、Prettier)会主动读取被 files.exclude 过滤的文件,导致你在“Git Changes”或“Problems”面板里仍看到 .git 或 node_modules 下的文件——这不是配置失效,是插件行为不受 files.exclude 约束。
- 验证是否真被隐藏:关掉所有非必要扩展,只留默认功能,再看资源管理器
- GitLens 显示
.git相关内容?那是它自己读取 Git 仓库元数据,和files.exclude无关 - ESLint 报
node_modules里的错?说明它没配eslint.ignore,得单独在.eslintrc.js或package.json里设 ignore 规则 - 真正需要统一管控的,只有资源管理器 + Ctrl+P + 搜索三处;其他视图的行为得查对应插件文档
最常被忽略的一点:改完 .vscode/settings.json 后,必须关闭再重新打开文件夹(File > Close Folder → File > Open Folder),仅保存或重启 VSCode 不刷新资源管理器缓存。











