ctrl+k ctrl+0(win/linux)或cmd+k cmd+0(mac)可一键折叠所有代码块,但需满足语言模式正确、foldingstrategy为auto、光标在编辑器内且语言扩展正常启用等前提,否则无效;ctrl+k ctrl+j仅展开已折叠区域,不恢复未折叠层级。

Ctrl+K Ctrl+0 和 Ctrl+K Ctrl+J 是真实有效的,但它们不是“一键万能”——是否生效,取决于语言模式、折叠策略、光标位置和插件状态。按了没反应,大概率不是快捷键坏了,而是环境没对上。
Ctrl+K Ctrl+0 没反应?先检查这三件事
常见现象是按键后完全无反馈,甚至光标跳进终端或命令面板。这不是 VSCode 故障,而是触发条件缺失:
- 光标没在编辑器文本区:比如聚焦在搜索框、侧边栏或调试控制台,必须点一下代码区域再试
- 文件语言模式错误:右下角显示
Plain Text而不是JavaScript或Python,foldingProvider根本不加载 -
editor.foldingStrategy被设为indentation:该模式只认缩进,不识别function、if等语义块,恢复默认auto即可
Ctrl+K Ctrl+J 展开全部,但不会“补全”未折叠的层级
这是最容易误解的一点:editor.unfoldAll 只展开「已被折叠」的区域,不是还原到原始打开状态。例如:
- 你手动用
Ctrl+Shift+[折叠了一个for循环(第 4 层) - 又用
Ctrl+K Ctrl+0折叠了整个class(第 1 层) - 此时
Ctrl+K Ctrl+J会展开class和那个for,但第 2–3 层里原本就开着的函数、if块仍保持展开
它不负责“发现并展开所有潜在可折叠结构”,只响应已存在的折叠状态。
光标不在起始行,Ctrl+Shift+[ 就失效
Ctrl+Shift+[ 不是全局命令,它从光标所在行向上扫描最近的可折叠结构边界(如 function、def、{、class 行),再折叠整个块。光标落在空行、单行注释、字符串内部或缩进错位的 Python 行上,基本没反应。
- 安全做法:把光标放在
def/function/class所在行任意位置再按 - 鼠标悬停在行号左侧出现 ▶ 图标时再按,成功率更高;没图标说明 VSCode 根本没识别出结构
- Python 用户注意:
python.foldingStrategy若设为indentation,def行可能不被识别为折叠起点,建议保持auto或改用language-defined
#region 折叠写错一个字符就不生效
#region 不是万能标签,它依赖语言扩展支持,且格式极其严格:
- JS/TS 必须写成
// #region API config,不能用/* #region */ - Python 必须用
# #region utils(开头是#,不是//) - 必须独占一行,前面只能有空白符;后面紧跟空格和
#region(大小写敏感) - 写漏
#endregion不报错,但该#region之后所有内容都无法被折叠(包括后续合法的#region)
折叠状态默认不持久,关文件再开就恢复原样;如需记住折叠状态,得启用 "workbench.editor.restoreViewState": true 或装插件。











