Ctrl+Shift+[ 折叠光标所在区域,需将光标置于 function/if/def/{ 等语法起始行才生效;Ctrl+K Ctrl+0 可折叠全部可识别结构,但依赖语言模式正确及 foldingStrategy 设置;#region 折叠需对应语言扩展支持且格式规范。

Ctrl+Shift+[ 折叠当前光标所在代码块,但光标位置很关键
这个快捷键不是“随便按一下就折”,它会从光标所在行向上查找最近的可折叠节点(比如 function、if、class、{ 开头行),然后折叠整个结构体。如果光标落在空行、单行注释、字符串内部或缩进不一致的 Python 行上,大概率没反应。
常见错误现象:def my_func(): 这行明明有函数声明,按了 Ctrl+Shift+[ 却只折了一行——其实是光标没落在该行,而是卡在下一行空行或注释里。
- 必须把光标放在有语法意义的起始行:如
function、for、if、{、class所在行,或 Python 中def/if的缩进首行 - JSX 或 Vue SFC 中的
{}内联表达式默认不被识别,需装对应语言插件并确认其提供了foldingProvider - 鼠标悬停在行号左侧出现 ▶ 时再按快捷键,成功率更高;没图标基本说明 VSCode 没识别出可折叠结构
Ctrl+K Ctrl+0 折叠全部,但不是所有代码都会被收起来
这个操作只作用于语言扩展明确标记为“可折叠”的结构,比如函数体、类定义、带 {} 的语句块、HTML 标签对。它不会折叠纯文本、空行、单行注释,也不会强制按缩进收起 Python 的 if 分支——除非你手动设过 "editor.foldingStrategy": "indentation"。
常见错误现象:Python 文件里按了 Ctrl+K Ctrl+0,结果只有 class 被折,def 函数体还在展开状态——这通常是因为 Python 扩展的 foldingProvider 默认只识别 class 和模块级 if __name__ == "__main__",而普通函数需依赖缩进策略。
- 检查右下角语言模式是否正确(例如显示
Python而非Plain Text) - 在设置中搜
foldingStrategy,Python 推荐设为indentation;JS/TS 等建议保持auto -
Ctrl+K Ctrl+0是两步:先按住Ctrl+K松开,再立刻按Ctrl+0(数字零,不是字母 O);Mac 用户注意是Cmd+K松开后再按Cmd+0 - 某些插件(如 Prettier、Ember CLI)会劫持
Ctrl+K前缀,可在keybindings.json中搜索editor.foldAll确认绑定是否被覆盖
#region 注释折叠需要语言扩展支持,不能随便写
VSCode 不是看到 #region 就自动折叠,它依赖当前语言扩展是否实现了对这种标记的解析。JS/TS 默认支持 // #region 和 // #endregion;Python 官方扩展也支持,但必须用 # 开头、且不能混用 /* #region */ 这类多行变体。
常见错误现象:写了 // #region utils 却没出现折叠图标——大概率是文件没被识别为 JS/TS,或者扩展未加载(比如 .js 文件被误设为 Plain Text)。
- 确保右下角语言模式正确,例如 JavaScript、TypeScript、Python(不是 “JavaScript React” 或 “JSON with Comments”)
- 不要写
/* #region */或/* #region ... #endregion */,VSCode 只识别单行注释开头的#region - 嵌套最多支持 5 层,再深可能触发渲染异常或折叠失效
- 折叠状态默认不保存,关掉文件再打开就恢复展开;如需记住,得装扩展(如 “Auto Save Folding State”)或启用
"workbench.editor.restoreViewState": true
Ctrl+K Ctrl+J 展开全部,但它不等于“还原原始状态”
这个命令只会把当前已折叠的层级展开,不会去碰那些本来就没被折叠的代码。比如你手动用 Ctrl+Shift+[ 折了第 3 层 if 块,又用 Ctrl+K Ctrl+0 折了第 1 层 class,此时 Ctrl+K Ctrl+J 会同时展开 class 和 if,但如果你之前跳过某段没动过,它就永远保持原样。
没有内置的“一键回到最初打开时的折叠状态”功能。所谓“展开全部”,只是“展开所有已被折叠的部分”,不是“重置所有折叠”。
- 大型文件中频繁使用
Ctrl+K Ctrl+J可能导致光标跳到文件顶部,因为视图重排;建议配合Ctrl+Home快速回位 - HTML 文件里它能折叠/展开标签对,但若文档缺失
<html>根节点,可能退化为纯文本处理,折叠失效 - JSON 文件默认不支持语法级折叠,除非设
foldingStrategy为indentation,否则Ctrl+K Ctrl+J对{}或[]无响应
折叠逻辑高度依赖语言扩展实现和设置组合,同一份代码在不同配置下表现可能完全不同。最常被忽略的是 foldingStrategy 和语言模式识别——这两项不出问题,其他快捷键才真正可靠。


















