vscode默认通过"*/.": true规则在files.exclude中隐藏.htaccess、.env等点文件,需手动删除该行并重启资源管理器;同时需检查search.exclude是否同步排除,且工作区设置优先级高于用户设置。

为什么 .htaccess、.env 看不见?默认规则在屏蔽它们
VSCode 默认会隐藏所有以 . 开头的文件,靠的是这一条内置规则:"**/.*": true。它不是“系统级隐藏”,而是 files.exclude 主动过滤掉——所以即使你在 Windows 或 macOS 里手动设了文件可见,VSCode 仍不显示。
常见现象:你确认 .env 文件真实存在,但资源管理器里就是空的;或者 Ctrl+P 搜不到 .htaccess。
- 打开命令面板(
Ctrl+Shift+P或Cmd+Shift+P),运行Preferences: Open User Settings (JSON)(改全局)或Preferences: Open Workspace Settings (JSON)(只对当前项目生效) - 找到
"files.exclude"对象,删掉或注释掉"**/.*": true这一行 - 如果只想保留部分点文件(比如允许
.env但继续隐藏.DS_Store),可改成更精确的规则:"**/.DS_Store": true、"**/.git/**": true,单独放行需要的 - 保存后,**不用重启 VSCode**,但需关闭再重新打开当前文件夹(
File > Close Folder→File > Open Folder),否则资源管理器缓存不刷新
工作区设置优先级高于用户设置,别配错地方
很多人改了用户级 settings.json 却没效果,是因为当前文件夹下已有 .vscode/settings.json,其中的 files.exclude 会完全覆盖用户配置。
检查方法:打开命令面板,运行 Preferences: Open Workspace Settings (JSON),看是否存在 files.exclude 字段。
- 如果存在,直接在里面修改,别碰用户设置——否则白改
- 如果想统一管理(比如团队项目),建议把排除规则写进工作区
.vscode/settings.json,并提交到 Git,避免每人各自配置 - 临时测试时,可先清空工作区的
files.exclude,确保它不干扰你的调试
search.exclude 和 files.exclude 是两套独立系统
你让 .env 显示出来了,但 Ctrl+Shift+F 全局搜索仍搜不到它?那大概率是 search.exclude 也在拦着——它和 files.exclude 没有自动同步关系。
两者分工明确:files.exclude 控制左侧文件树和 Ctrl+P 列表;search.exclude 只管搜索结果是否包含某路径。
- 要让隐藏文件既“看得见”又“搜得到”,除了删
"**/.*": true,还得检查search.exclude是否也写了类似规则 - 典型错误配置:
"**/.*": true同时出现在两个地方,删一个漏一个 - 推荐做法:把常用项(如
"**/*.log": true)同时加到files.exclude和search.exclude,保持行为一致
Git 状态图标还在?files.exclude 不影响 SCM 面板
你把 .env 加进 files.exclude 后,资源管理器里看不见了,但左侧源代码管理(SCM)面板依然显示它被修改——这不是 bug,是设计如此。
files.exclude 只作用于 UI 层展示逻辑,Git 的跟踪、状态计算、diff 渲染全部走 Git 自己的流程,和 VSCode 的排除规则无关。
- 如果不想 Git 跟踪
.env,该加.gitignore,而不是依赖files.exclude - 同理,
.vscode目录在files.exclude里默认被隐藏,但它照样能被 Git 提交——是否提交取决于你有没有把它写进.gitignore - 真正容易混淆的点在于:你以为“隐藏=忽略”,其实 VSCode 里这两件事由完全不同的机制控制
files.exclude,且都含 "**/.*": true,但只改了其中一个;或者以为删了这行就能搜到点文件,却忘了 search.exclude 还在默默过滤。











