files.exclude 用于隐藏资源管理器中的文件和文件夹,路径需以/开头、相对工作区根目录,且仅生效于工作区设置(覆盖用户设置);search.exclude 仅影响搜索,与资源管理器无关。

直接写 files.exclude 就行,别碰 search.exclude —— 后者只影响搜索,对资源管理器完全无效。
为什么改了设置文件夹还在资源管理器里?
常见错误是配错了配置项或路径写法:
- 误把
search.exclude当成全局隐藏开关,结果node_modules还在侧边栏明晃晃挂着 - 写了
"dist": true或"dist/**": true,但 VSCode 只认"**/dist"这种 glob 开头带**/的写法 - 改的是用户级
settings.json,但项目里已有.vscode/settings.json,工作区配置直接覆盖了你改的 - 用了宽泛模式如
"**/*": true,整个资源管理器变空——不是崩溃,是全被过滤掉了
files.exclude 路径怎么写才生效?
所有路径都相对于工作区根目录,必须用 glob 模式,且以 **/ 开头(除非你真只想匹配根目录下那一层):
-
"**/node_modules": true→ 隐藏任意层级的node_modules目录 -
"**/*.exe": true→ 隐藏所有位置的可执行文件 -
"**/.DS_Store": true→ macOS 系统文件,直接写文件名即可 -
"**/logs/**": true→ 隐藏logs目录及其全部子内容(/**不是必须,但加了更明确) - 含空格的路径如
"my folder",直接写"my folder": true,不用转义
该写进用户设置还是工作区设置?
优先写进项目根目录下的 .vscode/settings.json:
- 团队协作时,把
.vscode/settings.json提交到 Git,所有人开项目就自动清爽 - 不同项目需求不同:前端可能要隐藏
**/dist,后端可能要隐藏**/target,混在用户设置里会互相干扰 - 语言专属规则支持写法:
"[javascript]": { "files.exclude": { "lib/**": true } },注意语言标识符全小写 - 如果工作区设置了
files.exclude,用户级同名配置会被完全忽略
改完不刷新?别重启,试试这个操作
VSCode 通常保存后立刻刷新资源管理器,但遇到缓存问题时:
- 关闭当前文件夹:
File > Close Folder - 重新打开:
File > Open Folder,比重启快得多 - 确认是否被插件“绕过”:关掉 GitLens、ESLint 等扩展再看资源管理器,排除它们主动读取导致的视觉残留
- 想让
.env或.gitignore显示出来?删掉默认的"**/.*": true,它不是系统级隐藏,就是一条普通files.exclude规则
最常被忽略的一点:隐藏只是视觉层面的,files.exclude 不影响任何实际行为——终端照跑、Git 照提交、构建照成功。但如果你同时依赖 search.exclude 做搜索优化,得单独配,它不会自动同步 files.exclude 的规则。


















