vscode折叠状态默认不保存,关闭文件或重启后恢复展开;仅通过扩展(如restore code folding)或设置"workbench.editor.restoreviewstate": true(限已保存且上次打开的文件)可实现持久化。

折叠状态默认不保存,关文件再开就全展开了
VSCode 的折叠状态是会话级的,不是文件级的。你手动折好的 <div>、<code>function 或 #region 区域,只要关闭文件或重启编辑器,下次打开时一律恢复展开——这不是 bug,是设计如此。
想保留折叠状态,只有两个办法:
- 装扩展如
Restore Code Folding(作者:mohsen1),它会在文件保存时记录折叠位置,重开自动还原 - 在
settings.json里加"workbench.editor.restoreViewState": true,但注意:这只对“上次关闭前处于打开状态的编辑器标签页”生效,且依赖文件已保存;未保存的临时文件或新打开的文件仍不记状态
HTML 标签折叠后,保存设置不会影响渲染或语法校验
折叠只是 UI 层面的视觉收起,不影响任何实际行为:<script></script> 块是否折叠,代码照样执行;<template></template> 里的 Vue 模板折叠后,语言服务依然能正常校验语法;空的 <p></p> 折叠与否,HTML 验证器也不会多看一眼。
唯一受影响的是人工阅读效率——比如你习惯把所有 <section></section> 折起来只看标题层级,那这个习惯完全依赖你自己的操作或扩展支持,和项目配置无关。
别指望 editor.foldingStrategy 控制“保存行为”
这个设置只决定 VSCode 怎么识别哪些地方可折叠(syntax / indentation / auto),和折叠状态是否持久毫无关系。设成 syntax 不会让 <ul></ul> 折叠后自动记住;改成 indentation 也不会让 Python 函数折叠状态跨会话保留。
常见误解是调了这个参数就能“一劳永逸”,其实它只解决“能不能折”,不解决“折完还记不记得”。
自定义 #region 折叠区的保存逻辑更脆弱
用 // #region 或 /* #region */ 手动划出的折叠块,其识别完全依赖语言扩展(如 JavaScript/TypeScript 官方插件)。一旦扩展更新、禁用或语言模式识别错误(比如 .ts 文件被误判为 Plain Text),这些区域就直接失去折叠能力,更别说保存状态了。
所以这类标记适合临时组织代码,不适合当长期结构约定来依赖。
折叠状态的持久化是个孤立需求,和语法识别、快捷键、语言支持都正交。它不靠改设置就能开启,必须靠扩展或精细控制编辑器生命周期——这点很容易被忽略,直到你第 N 次重开文件发现所有精心折叠的结构又摊平了。











