vscode资源管理器默认不保存展开状态是设计行为,唯一稳定方案是设置workbench.tree.expandmode为"singleclick"并手动预热路径,或使用restore tree state插件持久化状态,配合auto-collapse explorer优化多文件编辑体验。

VSCode资源管理器默认不保存展开状态,这是设计行为
不是 bug,也不是配置遗漏——VSCode 从 1.0 版本起就明确不持久化文件树的展开层级。你昨天展开到 src/lib/utils,今天重启后依然只显示根目录,是它故意这么做的。所有试图靠 workbench.tree.indent 或 explorer.compactFolders 改变“默认展开深度”的尝试都会失败,因为这些配置项根本不控制展开行为。
让常用子目录自动展开的唯一稳定方案
靠设置 + 预热,而不是插件自动记忆:
-
workbench.tree.expandMode设为"singleClick"(推荐),避免误点收起 - 在项目根目录下建
.vscode/settings.json,写入:{"workbench.tree.expandMode":"singleClick"} - 每次退出 VSCode 前,**必须用鼠标单击选中并进入**你最常工作的子目录(比如
src、packages/core),不能只打开里面的文件却不点进文件夹 - 重启后,VSCode 会自动展开到你上次“点进去”的那一层,但不会递归展开其子级;如需全展开,用
Ctrl+Click(Win/Linux)或Cmd+Click(macOS)点击该文件夹
Restore Tree State 是目前唯一持续维护的真解决方案
其他名字带 “folder”、“expand”、“tree” 的插件,90% 已停更或只管编辑器标签。Restore Tree State(作者 Romain Lancien)能真正保存并还原整个树状展开状态,包括多级嵌套和折叠/展开混合状态:
- 安装后无需额外配置,开箱即用
- 支持跨工作区、跨重启保持状态
- 对大型 monorepo(如含
packages/*/src多层嵌套)特别有效 - 注意:它会在首次启用时扫描整个项目生成快照,如果项目超大(>5 万文件),首次加载可能卡顿 2–3 秒
Auto-Collapse Explorer 适合多文件并行编辑场景
如果你同时打开十几个文件、左侧树形结构越来越臃肿,Auto-Collapse Explorer 能自动折叠非当前编辑文件所属路径,只保留正在编辑的那条分支展开:
- 它不解决“启动时展开哪几层”,而是解决“展开太多太乱”
- 和
Restore Tree State可共存,但两者逻辑不同:前者是动态收缩,后者是状态还原 - 启用后,切换编辑器标签时,树会实时响应——这点比手动收起靠谱得多
- 注意:它依赖
explorer.autoReveal开启才能生效,否则无法判断“当前编辑路径”
真正麻烦的不是“怎么展开”,而是 VSCode 把展开状态当成临时 UI 行为而非项目元数据来对待——所有绕过它的技巧,本质都是在模拟“用户刚点进来”的上下文。复杂项目里,Restore Tree State + Auto-Collapse Explorer 组合用,才是目前最接近“自然”的体验。











