不能——Ctrl+K Ctrl+0折叠所有语言支持的可折叠节点,非专为函数设计;JavaScript/TypeScript中因function和class天然为折叠单元而显似全折函数,Python默认不识别普通def函数体,需改python.foldingStrategy为indentation或用#region手动标记。

Ctrl+K Ctrl+0 能不能直接批量折函数?
不能保证——它折叠的是“所有语言支持的可折叠节点”,不是专为函数设计。JavaScript/TypeScript 中 function 和 class 天然是折叠单元,所以看起来像全折了函数;但 Python 默认不把普通 def 函数体当作可折叠结构,按了 Ctrl+K Ctrl+0 后可能只剩类和模块级块被收起。
常见错误现象:Python 文件里光标在 def my_func(): 行按了没反应,或只折了 if __name__ == "__main__": 块。
- 必须先保存文件,未保存的临时文件常不触发语法折叠
- 右下角状态栏语言模式必须是
Python,不是Plain Text或JSON - 确认已启用
ms-python.python(含 Pylance),且没禁用 foldingProvider
Python 用户为什么 def 函数体不折叠?
因为 VSCode 默认用 auto 折叠策略,而官方 Python 扩展对 def 的语义折叠支持有限——它更倾向识别 class、if 模块入口这类显式结构,而非普通函数体。
解决办法不是换快捷键,而是改配置:
- 打开设置(
Ctrl+,),搜foldingStrategy - 把值从
auto改成indentation:这样 VSCode 会纯按缩进层级判断,def下的缩进块就能被收起来了 - 副作用:单行
if x: y()或空行后的缩进也可能被误折;若干扰大,就切回auto,改用#region - 检查
settings.json是否有"python.foldingStrategy": "none",删掉或改成"language-defined"
想只折函数,不碰 if/for/注释怎么办?
VSCode 没有原生“仅函数”快捷键,Ctrl+K Ctrl+0 是全量操作,无法过滤类型。唯一稳定可控的方式是手动围区:
- 在函数开头顶格写
# #region(Python)或// #region(JS/TS),结尾顶格写# #endregion或// #endregion - 不能带空格:
# #region✅,# #region❌,//#region❌,// #region myFunc❌ - 必须独占一行,前面只能有空白符;后面紧跟空格 +
#region(大小写敏感) - 写漏
#endregion不报错,但之后所有内容都无法折叠(包括后续合法的#region)
折叠状态为什么一关文件就重置?
VSCode 默认不保存折叠状态,每次打开都是全展开。这不是 bug,是设计如此——它只记录当前会话的折叠动作,不持久化到文件或工作区。
如果你依赖折叠结构做日常开发,容易忽略这点导致反复操作:
-
"editor.foldEnable": true必须开启(一般默认是 true,但可能被工作区配置覆盖) - 真要记住状态,得靠插件如
Restore View State,或启用workbench.editor.restoreViewState - 别指望
Ctrl+K Ctrl+0按一次就能“一劳永逸”,它只作用于当前打开的编辑器实例


















