Sublime Text 无真正“一键折叠所有函数”的原生命令,Ctrl+K,Ctrl+0 是 fold_all 误折非函数结构,fold_by_level 需实测作用域层级(Python 通常为2),正则选中+Ctrl+Shift+[ 是语法失效时的兜底方案,且须满足语言识别、统一缩进、规范函数格式三大前提。

Sublime Text 没有真正意义上的“一键折叠所有函数”的原生命令——所有看似快捷的操作,要么误折非函数结构,要么依赖语法识别、缩进规范、作用域层级等隐性条件,缺一即静默失败。
为什么 Ctrl+K, Ctrl+0 不是你要的“只折函数”
这个命令触发的是 fold_all,它不区分类型,只按语法标记的“顶层可折叠结构”批量收起。在 Python 文件中,它会同时折叠 class、顶层 if、模块级 docstring、__all__ = [],甚至 JSON 字面量。你看到函数被收起,只是因为它们和这些结构碰巧处于同一作用域层级。
- 不是精准控制,是批量误伤
- 右下角显示
Plain Text时完全无效 - 混用 Tab/Space 缩进会导致部分
def行不被识别,进而漏折
怎么用 fold_by_level 精准只折函数(以 Python 为例)
这是最接近目标的原生路径,但必须实测函数作用域层级数字,不能硬记或猜:
- 先将光标停在任意一个
def行,按Ctrl+Shift+[确认能正常折叠该函数 - 按
Ctrl+Shift+P→ 输入show_scope_name回车,状态栏若显示source.python meta.function.python,说明函数作用域已识别 - 再按
Ctrl+Shift+P→ 输入fold_by_level回车 → 尝试输入2(Python 官方语法通常为 2,但自定义语法包可能为 3 或 4) - 输错无反馈,只静默失败;输对后,所有被标记为
meta.function的块会同时收起
语法失效时的兜底方案:正则选中 + Ctrl+Shift+[
当右下角显示 Plain Text,或 show_scope_name 只返回 source.python 时,fold_by_level 和 Ctrl+K, Ctrl+0 都不可靠。此时纯文本匹配最稳:
-
Ctrl+F打开查找 → 勾选Regex→ 输入^def\s|^function\s|^[a-zA-Z]+\s*=\s*function\s*\(.*\)\s*\{ - 点
Find All,所有函数定义行(含装饰器行)被高亮选中 - 再按
Ctrl+Shift+[—— Sublime 会对每个选中行单独触发一次折叠 - 注意:此法不校验语义,注释里写了
def foo()也会被误折
三个硬性前提,缺一不可
无论用哪种方式,以下三点必须同时满足,否则任何“一键”操作都只会安静地什么也不做:
- 右下角语言必须是
Python(不能是Plain Text或未定义折叠规则的插件语法) - 缩进必须统一(
Tab/Space混用会导致def行不被识别) - 函数定义格式要规范(比如
def f(): """doc"""; pass这种紧贴写法常被跳过,加空行即可修复)










