VSCode资源管理器默认不保存展开状态是官方设计行为,唯一稳定方案是配合workbench.tree.expandMode设置与手动预热,或使用Restore Tree State插件实现状态持久化。

VSCode 资源管理器默认不保存展开状态,这是设计行为
VSCode 启动后文件树总是折叠到根目录,不是 bug,是官方明确的设计决策:它只持久化已打开的编辑器标签和活动文件,explorer.compactFolders、workbench.tree.indent 等配置项都不控制“上次展开哪几层”。哪怕你手动展开到 src/utils/hooks 再退出,下次打开仍从根开始收起。
想让常用子目录自动展开,唯一稳定办法是配合 workbench.tree.expandMode + 手动预热
VSCode 本身没有“恢复展开状态”的开关,但它会记住你最近一次双击/单击进入的路径,并在下一次启动时尝试还原到那一层(前提是路径仍存在)。
-
workbench.tree.expandMode设为"singleClick"(推荐)或"doubleClick",避免误操作收起 - 在项目根目录下建
.vscode/settings.json,写入:{"workbench.tree.expandMode": "singleClick"} - 每次关 VSCode 前,务必用鼠标**点击选中**并**单击/双击进入**你最常工作的子目录(如
src、pages或components),而不是只打开文件却不点进文件夹 - 重启后,VSCode 会自动展开到你上次“点进去”的那层,但不会递归展开所有子级
需要一次性展开整个子树?用 Ctrl+Click(Win/Linux)或 Cmd+Click(macOS)
这不是快捷键绑定,而是资源管理器组件的硬编码交互逻辑,没有对应命令 ID,也不能用键盘触发。
- 必须先用鼠标**点中目标文件夹**(让它高亮选中),再按住
Ctrl或Cmd左键单击 - 会递归展开该文件夹下所有层级,无深度限制,但含大量文件时明显卡顿
-
Alt+Click是关闭所有编辑器标签页,Shift+Click是多选文件——这两个组合键完全不触发展开 - 右键空白处选 “Close all folders” 可快速收起全部,比逐个点更省事
插件方案:只有 Restore Tree State 真正解决状态还原问题
其他名字带 “folder”、“expand”、“tree” 的插件多数已停止维护,或只管编辑器标签。目前唯一持续更新、专注解决此问题的是 Restore Tree State(作者 Romain Lancien)。
- 安装即生效,无需配置;状态存于
WorkspaceStorage/<workspace-id>/state.vscdb,不污染项目 - 支持多根工作区,但只对当前激活的根目录生效
- 如果你依赖深度嵌套的展开结构(比如
packages/core/src/lib/utils),又不想每次手动点进,这个插件是实际可行的底线方案


















