ctrl+k ctrl+0(win/linux)或cmd+k cmd+0(macos)是唯一能批量折叠所有函数体的快捷键,但需确保语言模式正确、文件已保存,且python用户须将python.foldingstrategy设为indentation并重启窗口。

Ctrl+K Ctrl+0 是唯一能批量折叠所有函数体的快捷键
它不是“只折函数”,而是触发 editor.foldAll 命令,递归折叠当前语言支持的所有可折叠结构——对 Python/JS/TS/Java 等主流语言,def、function、class 天然构成一级折叠单元,所以效果就是所有函数体被收起。
常见错误现象:Ctrl+K Ctrl+0 按下后毫无反应,或只折了注释和 import,函数体完全不动。
- 右下角状态栏显示的是
Plain Text?点它,手动选成Python、JavaScript等对应语言 - 文件没保存?未保存的
Untitled-1缓冲区通常不触发语法解析,Ctrl+S保存后再试 - Python 用户特别注意:
python.foldingStrategy默认是auto,但官方扩展在该模式下常忽略普通def函数体;必须设为indentation
Python 函数不折叠?改 python.foldingStrategy,不是 editor.foldingStrategy
这是最常踩的坑:全局设置 "editor.foldingStrategy": "indentation" 对 Python 文件无效。VSCode 的 Python 扩展使用独立配置项,全局设置会被覆盖。
正确做法是显式设置 Python 专属策略:
- 打开设置(
Ctrl+,),搜python folding,找到Python > Folding Strategy,下拉选indentation - 或直接编辑
settings.json,加这一行:"python.foldingStrategy": "indentation" - 改完必须重启窗口(
Developer: Reload Window),仅重载配置不生效
注意:indentation 模式下,单行 if 或缩进不一致的代码块可能被误折叠——这是用准确性换功能的 trade-off。
Ctrl+Shift+[ 不是批量操作,别指望它折函数体
这个快捷键只做一件事:定位光标所在位置最近的一个可折叠结构,并折叠它。它的行为完全取决于光标落点:
- 光标在
def my_func():行任意位置 → 通常能折整个函数体 - 光标在函数体中间某行 → 可能只折那个
if或for块,而非函数 - 光标在空行或注释行 → 大概率无响应
想批量操作函数体?别依赖它。它不是设计来干这事的,Ctrl+K Ctrl+0 才是唯一可靠路径。
想只折函数、不碰 if/for/注释?用 #region 手动标记
VSCode 原生不支持按结构类型筛选折叠,但 #region 注释是跨语言通用的强制折叠入口,且状态可被 Git 跟踪:
- JS/TS 写法:
// #region myFunc+// #endregion(顶格,前后无空格) - Python 写法:
# #region myFunc+# #endregion(必须用#,不是//) - 无效常见原因:注释前缀错、语言模式不对(
.py文件被识别为Plain Text)、中间有空行破坏连续性
折叠状态默认不保存——关闭再打开文件,所有折叠恢复展开。这不是 bug,是设计限制,因为多人协作时它和代码变更容易冲突。











