files.exclude 可彻底隐藏指定文件夹,使其不出现在资源管理器、ctrl+p 和搜索中;需用 "**/dist": true 等 glob 模式,负向排除如 "!node_modules/@types" 要置于通用规则之后。

VS Code 怎么用 files.exclude 隐藏特定文件夹
直接在工作区或用户设置里改 files.exclude,就能让资源管理器彻底不显示指定文件夹。它不是“折叠”或“忽略”,而是从文件树里移除——搜索、快速打开(Ctrl+P)也不会列出这些路径。
常见错误是把路径写成相对路径(比如 "node_modules": true),结果只在根目录生效;或者用了通配符但没加 **/ 前缀,导致子目录下同名文件夹仍可见。
-
files.exclude是全局设置项,支持工作区级(.vscode/settings.json)和用户级(设置 UI 或settings.json),优先级:工作区 > 用户 - 键名是 glob 模式,不是正则;要匹配任意层级的
dist,得写"**/dist": true,只写"dist": true只匹配项目根下的dist - 如果文件夹名含空格或特殊字符(如
my folder),不用引号转义,VS Code 会自动处理;但模式本身不能带引号(即写"my folder": true,不是"\"my folder\"": true) - 隐藏后,该路径下的文件依然可被编辑、保存、Git 跟踪——只是资源管理器“看不见”
为什么 search.exclude 不影响资源管理器显示
search.exclude 和 files.exclude 完全独立:前者只控制搜索结果过滤,后者才决定资源管理器是否渲染。很多人试了 search.exclude 发现文件夹还在左边,就是混淆了这两个配置。
-
search.exclude的值不会让文件夹从资源管理器消失,哪怕你把它和files.exclude写成一样 - 两者语法一致,但作用域不同:一个管 Ctrl+Shift+F,一个管侧边栏
- 想同时屏蔽搜索和显示?两个配置都得手动加一遍,没有联动机制
隐藏 node_modules 但保留部分子目录(比如 types)
默认 "node_modules": true 会整个干掉,但有时你希望保留 node_modules/@types 用于类型提示——这时候得用负向排除(glob 的 !... 语法)。
- 顺序重要:
files.exclude是按字典序匹配的,所以必须把例外规则写在通用规则之后 - 正确写法示例:
"files.exclude": { "node_modules": true, "!node_modules/@types": true, "!node_modules/types": true } - 注意:
!node_modules/@types只对@types目录本身有效;它的子目录(如@types/node)仍会被"node_modules": true吃掉,除非再加一条"!node_modules/@types/**" - VS Code 1.85+ 支持
!**/node_modules/@types/**这种更宽松的写法,老版本建议用绝对路径模式
隐藏后发现 Git 状态图标不见了,是设置错了?
不是。资源管理器隐藏文件夹后,连带它的 Git 状态(修改/未跟踪图标)也一并消失——因为整个节点没被加载。这属于预期行为,不是 bug。
- Git 面板(源代码管理视图)不受
files.exclude影响,所有变更仍会正常列出 - 终端里
git status也完全不受影响 - 如果你依赖侧边栏图标判断状态,又想隐藏某些目录,只能妥协:要么不隐藏,要么靠 Git 面板确认
- 极少数插件(如 Project Manager)可能缓存了旧文件树,重启 VS Code 或重载窗口(
Ctrl+Shift+P→Developer: Reload Window)能刷新











