直接改files.exclude即可实时隐藏侧边栏文件夹,而search.exclude仅影响Ctrl+Shift+F搜索结果;二者语法相同但作用域独立,需分别配置"**/dist": true等规则才能同时隐藏并屏蔽搜索。

直接改 files.exclude 就行,不用重启,改完立刻消失——但写错模式会导致整个资源管理器变空,不是bug,是真被全过滤了。
为什么 search.exclude 不管用?
它只影响 Ctrl+Shift+F 搜索结果,和左侧文件树完全无关。很多人配了 "search.exclude": {"**/dist": true},发现 dist 还在侧边栏,就是因为没动 files.exclude。两个配置语法一样、作用域不同,必须分开写。
-
files.exclude:控制资源管理器(左侧文件树)、Ctrl+P 快速打开、甚至文件预览是否列出该路径 -
search.exclude:仅限制搜索框里扫哪些目录,不影响视觉呈现 - 想同时隐藏 + 屏蔽搜索?得手动在两个地方都加一遍
"**/dist": true
files.exclude 的 glob 路径怎么写才对?
所有路径都是相对于工作区根目录的 glob 模式,不是正则,也不是本地相对路径。常见错误就是漏掉 **/ 前缀或误加引号。
-
"dist": true→ 只匹配项目根下的dist,子目录里的packages/foo/dist依然可见 -
"**/dist": true→ 正确,递归匹配任意层级的dist文件夹 -
"**/node_modules/**": true→ 可以,但没必要;"**/node_modules": true已足够隐藏整个文件夹(含其内容) -
"**/*.exe": true→ 隐藏所有层级的 .exe 文件 -
"**/.vscode": true→ 隐藏项目里的 .vscode 配置文件夹 - 文件夹名含空格,如
my folder,直接写"my folder": true,不加引号、不转义
工作区设置 vs 用户设置,该选哪个?
优先写进项目根目录下的 .vscode/settings.json。它只对当前项目生效,团队协作时能统一行为,且自动覆盖用户级设置。
- 用户级设置(全局):
$HOME/Library/Application Support/Code/User/settings.json(macOS)等路径,影响所有项目 - 工作区级设置(推荐):
.vscode/settings.json,VS Code 会自动读取并优先应用 - 语言专属排除可加前缀,比如
"[javascript]": { "files.exclude": { "lib/**": true } },注意语言标识符全小写 - 别手滑写成
"**/*": true或"**": true,这会让整个资源管理器空白
想保留部分子目录(比如 @types)怎么办?
用负向排除 !,但顺序必须严格:通用规则在前,例外在后。字典序匹配,! 规则如果写在前面会被跳过。
- 正确写法:
"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/**": true
files.exclude 主动读取文件,验证是否真隐藏,建议先禁用扩展再看效果最易忽略的一点:隐藏只是视觉层面的——文件依然可编辑、保存、Git 提交、终端执行。别指望它替代 .gitignore 或权限控制。


















