VSCode中删除"**/.*": true后仍不显示.env或.gitignore,主因是files.exclude与search.exclude未同步清理、工作区设置覆盖用户配置、未重新打开文件夹,或存在权限/语言模式等底层问题。

VSCode里删了"**/.*": true却还是看不到.env或.gitignore,大概率不是配置没改,而是files.exclude和search.exclude两套规则没同步清理,或者工作区设置覆盖了你的修改。
为什么改了files.exclude仍不显示点文件
VSCode默认靠"**/.*": true这条规则过滤所有以点开头的文件,但它只控制资源管理器和Ctrl+P列表——不改它,.htaccess就永远“不存在”于左侧树中。但很多人改完发现还是空的,原因通常是:
- 改的是用户级
settings.json,但当前项目下有.vscode/settings.json,后者优先级更高,直接覆盖你的改动 - 只清空了
files.exclude,却忘了search.exclude里也有一模一样的"**/.*": true,导致Ctrl+Shift+F搜不到,误以为文件根本没加载 - 保存后没重新打开文件夹:VSCode不会热重载
files.exclude,必须执行File > Close Folder再Open Folder - 路径里含中文或符号时,某些旧版 VSCode 对 UTF-8 BOM 敏感,用外部编辑器保存的配置可能静默失效
files.exclude和search.exclude必须同时处理
这两个配置互不干扰,改一个漏一个就会出现“看得见但搜不到”或“搜得到但树里没有”的割裂现象。典型错误是:
-
files.exclude已删掉"**/.*": true,但search.exclude还留着,结果Ctrl+P能搜到.env,资源管理器却空白 - 想保留
.DS_Store但屏蔽其他点文件,只在files.exclude加了"**/.DS_Store": true,却没同步加到search.exclude,全局搜索仍会命中它 - 团队项目中把
files.exclude写进.vscode/settings.json并提交 Git,但忘了同步维护search.exclude,新人拉代码后行为不一致
推荐做法:两者都显式列出需要隐藏的项,例如:
{
"files.exclude": {
"**/.git": true,
"**/*.log": true
},
"search.exclude": {
"**/.git": true,
"**/*.log": true
}
}
工作区设置优先级高于用户设置,别配错地方
你改了全局settings.json却没效果,十有八九是因为当前文件夹下存在.vscode/settings.json。VSCode 的配置优先级是:工作区 > 用户 > 默认。验证方法很简单:
- 按
Ctrl+Shift+P运行Preferences: Open Workspace Settings (JSON),看是否打开了.vscode/settings.json - 如果该文件存在且含
files.exclude字段,直接在里面修改;删掉整个字段也行,让它回退到用户级配置 - 临时测试时,可先注释掉工作区的
files.exclude,确认问题是否消失,再逐步恢复规则 - 注意:远程开发(如 Remote-SSH)下,工作区设置在远程机器上,本地改
settings.json完全无效
状态栏右下角语言模式错误也会导致忽略规则失效
VSCode 的files.exclude是全局生效的,但有些插件(比如 Prettier、ESLint)的规则会依赖当前文件的语言模式。如果右下角显示的是Plain Text而非JavaScript或Python,不仅格式化不触发,部分扩展甚至会跳过读取.vscode/settings.json里的排除逻辑。
- 点击右下角语言标识,手动选对语言(如
.env应设为Shell Script或DotENV) - 检查是否有插件强制覆盖了语言识别,比如某些模板插件会把
.vue识别成HTML,导致files.exclude中针对vue的规则不匹配 - 用
Developer: Inspect Editor Tokens and Scopes命令确认当前真实的languageId,再核对files.exclude是否基于该 ID 配置(虽然files.exclude本身不依赖 languageId,但关联插件行为会)
真正容易被忽略的是:文件系统权限和远程挂载状态。比如在 WSL 或 Remote-SSH 中,.env真实存在,但 VSCode 没权限读取其元数据,files.exclude规则压根不会被应用——此时资源管理器空白,终端ls却能看到文件。这种情况下,删再多配置都没用,得先解决访问权限或重连远程服务。


















