直接改 files.exclude 即可让匹配路径从资源管理器彻底消失,其语法为相对于工作区根的 glob 模式,如 "/dist": true;需区分 files.exclude(控制侧边栏显示)与 search.exclude(仅影响搜索),且路径必须用 "/" 前缀才能递归匹配,否则无效。

直接改 files.exclude 就行,不用装插件、不用写脚本,VS Code 会立刻从侧边栏里移除匹配的文件和文件夹 —— 不是折叠,是彻底看不见。
files.exclude 怎么写才生效?
它不是正则,也不是本地路径,而是 glob 模式,且所有路径都相对于工作区根目录。写错就可能整个资源管理器变空,或者一个都隐藏不了。
-
"dist"→ 只匹配根目录下的dist文件夹,子目录里的packages/foo/dist不受影响 -
"**/dist"→ 正确,递归匹配任意层级的dist目录(推荐) -
"**/dist/**"→ 能用,但多一层遍历,无实际收益,还略拖慢刷新 -
"**/*"或"**"→ 危险!整个资源管理器会变空白 - 路径含空格(如
my folder)直接写"my folder": true,不加引号也不转义
用户设置 vs 工作区设置:该写在哪?
全局生效选用户设置,团队协作或项目专属规则必须用工作区设置 —— 后者优先级更高,且不会污染其他项目。
- 用户设置路径(macOS):
$HOME/Library/Application Support/Code/User/settings.json - 工作区设置路径:
.vscode/settings.json(需手动创建.vscode文件夹) - 多根工作区(
.code-workspace)中,settings字段下也可直接写files.exclude,对所有子文件夹统一生效 - 如果同时配置了用户级和工作区级
files.exclude,工作区的会完全覆盖用户的,不是合并
常见组合怎么配?举几个实用例子
别再一个个试,这些是真实项目中高频使用的模式,复制粘贴就能用:
- 隐藏所有构建产物:
"**/dist": true、"**/build": true、"**/out": true - 隐藏 Python 缓存:
"**/__pycache__": true、"**/*.pyc": true - 隐藏 Git 和系统文件:
"**/.git": true、"**/.DS_Store": true、"**/._*": true - 隐藏 Node.js 生态常见目录:
"**/node_modules": true、"**/coverage": true - 只在 TypeScript 项目里隐藏编译输出:
"[typescript]": { "files.exclude": { "**/lib/**": true } }(注意语言标识符全小写)
为什么改了没反应?排查这几点
修改后不生效,90% 是以下原因导致的,而不是 VS Code 坏了:
- 误配了
search.exclude—— 它只影响 Ctrl+Shift+F 搜索,对侧边栏完全没用 - 被
files.include显式包含过(极少见,但一旦存在就会覆盖exclude) - 插件(如 GitLens、ESLint)主动读取并展示文件,造成“还在那里”的错觉;关掉插件再验证
- 路径大小写错误(尤其在 macOS/Linux 上,
"**/Dist"不匹配dist) - 保存的是片段(如只写了
{"files.exclude": {...}}),但.vscode/settings.json必须是完整 JSON 对象,不能嵌套在其他字段里
真正容易被忽略的是:glob 模式里的 **/ 前缀不是可选项,是必须项;还有工作区设置一旦存在,用户设置就自动失效 —— 这两点出错,配置看起来没错,却完全不工作。











