VSCode 折叠功能需区分语法折叠与手动区域,快捷键生效依赖光标位置、语言模式、foldingProvider 启用及配置正确;#region 自定义折叠须严格遵循格式且依赖扩展支持。

VSCode 不能靠“一键全折”解决所有问题,必须分清“语法折叠”和“手动区域”,否则 Ctrl+K Ctrl+0 按了也没反应。
Ctrl+Shift+[ 折叠不了函数?光标位置错了
这个快捷键不是“按一下就收起整个函数”,它只响应光标所在的最内层可折叠结构。比如光标停在 if 块内部,就只折那个 if;停在空行或注释后,大概率没反应。
- 安全做法:把光标放在
function、def、class所在行(整行任意位置),再按Ctrl+Shift+[ - 鼠标悬停在行号左侧出现 ▶ 图标时再按,成功率更高;没图标说明 VSCode 没识别出结构
- Python 用户特别注意:
editor.foldingStrategy若设为indentation,def行可能不被识别为折叠起点,建议保持auto
Ctrl+K Ctrl+0 折叠全部,但为什么有些函数还在展开?
这个命令只作用于语言扩展明确标记为“可折叠”的结构,不是所有代码块都默认支持。它依赖三个前提同时成立:文件已保存、语言模式正确(右下角显示 JavaScript 而非 Plain Text)、当前语言的 foldingProvider 已启用。
- Python 文件中函数体不折叠:检查
settings.json中是否误设"python.foldingStrategy": "none",或未安装官方 Python 扩展 - JSX 或 Vue SFC 中的
{}内联表达式默认不可折叠,需对应语言插件提供foldingProvider - JSON / YAML 文件默认无语法级折叠,
Ctrl+K Ctrl+0对它们基本无效
想自定义折叠区域?别乱写 #region
#region 不是万能标签,它需要语言扩展支持且格式极其严格。VSCode 不会校验配对,写漏 #endregion 会导致后续所有内容无法折叠。
- JS/TS 必须写成
// #region API config,不能用/* #region */ - Python 同样支持,但必须用
# #region utils(开头是#,不是//) - 必须独占一行,前面只能有空白符;后面紧跟空格和
#region(大小写敏感) - 嵌套有效,但最多到 5 层,再深可能触发渲染异常
折叠状态不会自动保存,每次打开都是全展开
VSCode 默认不记住你上次折叠了哪些块。如果你依赖固定结构(比如只看类名、跳过实现细节),仅靠快捷键不够可靠。
- 真正可控的方式是配合
// #region标记关键逻辑块,它们会在每次打开时保持折叠态(前提是扩展支持且格式正确) - 若需恢复折叠状态,可安装扩展如
Restore Code Folding,或手动启用"editor.restoreViewState": true -
editor.foldingStrategy切换为indentation后,纯文本或 Markdown 也能折,但会失去函数名点击收起这类语义能力


















