vscode 不支持开文件自动折叠函数体,需插件或语言扩展配合;editor.foldonopen 不存在,折叠状态不持久,依赖 language-defined folding 和手动/宏触发。

VSCode 本身不支持“每次打开文件时自动折叠所有函数体”这一行为,必须通过配置 + 插件或语言扩展配合实现;纯设置无法达成,且效果因语言而异。
为什么 editor.foldOnOpen 不是你要找的选项
VSCode 官方没有 editor.foldOnOpen 这个配置项——搜不到、设了也无效。网上有些教程提到它,实际是混淆了旧版插件或错误记忆。真正生效的只有手动触发折叠(如 Ctrl+K Ctrl+0)或依赖语言扩展的自动行为。
- 折叠状态默认不持久化:关掉再打开,之前折好的会全部展开
- 即使你用命令
editor.foldAll折叠一次,重启文件后依然重置 - 所谓“默认折叠”只能靠语言服务在加载时主动提供折叠范围,但 VSCode 不会自动执行折叠动作
可行路径:靠 language-defined folding + 启动命令模拟
部分语言扩展(如 Pylance、TypeScript Server)会在文件打开时注册折叠范围,但不会自动折叠。要“看起来像默认折叠”,得靠自动化触发:
- 安装扩展 Settings Cycler 或 Run on Save(后者需配合保存动作)
- 更稳定的做法:用 VSCode 的
workbench.startupEditor+ 自定义任务行不通;真正可用的是 使用宏扩展,例如geddski.macros - 在
settings.json中添加:{ "macros": { "foldOnOpen": [ "editor.foldAll", "workbench.action.files.save" ] } }然后绑定到文件打开事件——但 VSCode 没有“onDidOpenTextDocument”快捷键触发点,所以只能退而求其次:在用户打开文件后按一个自定义键(如Ctrl+Alt+F)来一键折叠
Python/JS/TS 用户的实际替代方案
与其强求“自动”,不如让折叠更可靠、更易触发:
- 确保
"editor.foldingStrategy": "language-defined"(Python 必须设这个,否则只按缩进折,def函数体不被识别) - JavaScript/TypeScript 用户可加注释标记:
// #region包住函数体,再配"editor.showFoldingControls": "always"让箭头常显 - Python 用户注意:
#region(无空格)在官方 Python 扩展中默认支持,但必须开启折叠:"python.foldingStrategy": "language-defined" - 所有语言都可启用
"editor.folding": true(一般默认为 true,但工作区配置可能覆盖)
容易被忽略的关键点
折叠是否生效,80% 取决于三个不可见条件同时满足:
- 右下角语言模式必须是
Python、JavaScript等,不能是Plain Text或JSON with Comments - 对应语言扩展必须已激活且未报错(检查
Output面板 → 切换到Python或Typescript日志) -
foldingProvider必须存在:打开命令面板 →Developer: Inspect Editor Tokens and Scopes→ 点击函数名,看右上角是否有foldingProvider字样











