compact folders 是 vscode 默认启用的折叠优化功能,将子文件夹与父文件夹平铺显示(如 src 与 src/components 并列),用斜杠模拟嵌套以节省空间;关闭后恢复标准树形结构,支持真正折叠/展开和 ctrl+click 递归展开。

Compact Folders 是什么,为什么它会让文件夹“挤成一行”
VSCode 默认启用 Compact Folders,它的作用是把子文件夹和父文件夹平铺显示在同一层级(比如 src 和 src/components 并列),用斜杠 / 模拟嵌套感。这不是 bug,而是为了节省侧边栏空间的主动设计。
但对多数人来说,这种“伪嵌套”反而是干扰:无法直观看出层级关系、折叠/展开操作失效、Ctrl+Click 递归展开不生效——因为底层节点根本没被渲染为可折叠项。
关闭它之后,src 会作为独立节点显示,点三角图标才能看到 components、utils 等子项,这才是真正的树形结构。
如何关闭 Compact Folders 设置
最直接的方式是修改设置:
- 打开设置(
Ctrl+,或Cmd+,) - 搜索
compact folders - 取消勾选
Explorer > Compact Folders
这个设置会写入用户级或工作区级 settings.json,例如:
{"explorer.compactFolders": false}
注意:Compact Folders 是全局开关,没有路径白名单;一旦关闭,整个资源管理器都恢复为标准树形展开逻辑,包括所有已添加的多根工作区中的文件夹。
关闭后仍显示紧凑?检查这几个地方
常见失效原因不是设置没生效,而是其他配置或状态干扰了渲染:
-
explorer.fileNesting.enabled为true时,嵌套规则可能覆盖目录结构显示 —— 它优先把匹配的文件(如xxx.component.ts和xxx.component.html)收进同一节点,此时即使compactFolders关闭,部分区域仍看起来“不展开” - 某些主题或自定义 CSS 插件会强制重写资源管理器样式,导致折叠图标不可见或缩进异常
- VSCode 版本低于 1.86 时,
fileNesting功能不存在,但compactFolders行为一致;若用的是旧版,升级后行为更稳定 - 多根工作区中某个根目录路径含空格或 Unicode 字符(如中文),极少数情况下会导致 Explorer 渲染异常,可临时改名为纯 ASCII 路径验证
展开后怎么保持状态不重置
VSCode 本身不记忆文件夹展开状态,关掉 Compact Folders 只是让结构“可展开”,不代表下次启动自动展开你上次看的位置。
真正要持久化展开态,必须配合:
- 插件
Restore Tree State(唯一持续维护、专注此问题的方案) - 或手动养成习惯:每次退出前,用
Ctrl+Click(Windows/Linux)或Cmd+Click(macOS)点击你最常工作的根文件夹(如src),VSCode 会在WorkspaceStorage中记录该路径;只要文件夹存在,下次启动会尝试还原到那一层
别指望 workbench.tree.expandMode 或 files.autoSave 起作用——前者只影响点击行为(单击/双击触发展开),后者完全无关。











