Ctrl+K, Ctrl+0 是真正遍历整份文件折叠所有顶层结构的命令,需分步按且依赖语法识别;误操作、语言错误、缩进混用均会导致失效。

Ctrl+K, Ctrl+0 是最可靠的一键收起所有代码块方式
不是 Ctrl+Shift+[,那个只作用于光标所在最小可折叠结构;Ctrl+K, Ctrl+0 才是真正遍历整份文件、折叠所有顶层结构(函数、类、模块级 if、顶层注释块)的命令。必须分两步按:先按 Ctrl+K 松开,再按 Ctrl+0(数字零,不是字母 O)。Mac 用户对应的是 Cmd+K, Cmd+0。
常见误操作:
- 三键同时按下 —— Sublime 不识别
- 右下角语言显示为
Plain Text或Unknown Syntax—— 折叠规则不加载,Ctrl+K, Ctrl+0会静默失效 - 混用 Tab 和 Space 缩进(尤其 Python 文件)—— 语法解析中断,函数作用域无法识别,导致“该折的没折”
为什么光标放在 def 行按 Ctrl+Shift+[ 没反应?先查作用域
Sublime 折叠依赖语法定义中的作用域标记,不是靠关键词匹配。光标停在 def my_func(): 行却无法折叠,大概率是作用域未被识别。
验证方法:
- 光标置于
def行,按Ctrl+Shift+P(Mac 为Cmd+Shift+P),输入show_scope_name回车 - 状态栏若显示类似
source.python meta.function.python,说明函数作用域已识别;若只有source.python,说明语法高亮失效或插件冲突 - 检查右下角语言名是否为
Python(不是Python Improved或其他自定义语法,除非它明确定义了meta.function)
fold_by_level 能精准只折函数,但层级数字得实测
想排除 if、for 块,只收起所有函数定义?原生 Ctrl+K, Ctrl+0 会连类和顶层注释一起折,不够干净。这时要用命令面板调用 fold_by_level,但它不认语言,只认当前语法文件里 meta.function 所在的嵌套深度。
操作步骤:
- 手动用
Ctrl+Shift+[折一个函数,确认它真被识别为函数块(而非缩进块) -
Ctrl+Shift+P→ 输入fold_by_level→ 回车 - 依次尝试输入
1、2、3、4—— Python 通常是2,JS 常是3,但不同语法包可能不同;输错不会报错,只是没反应 - 如果函数前紧接 docstring 且无换行(如
def f(): """doc"""; pass),Sublime 可能跳过整个块,建议加空行或改写为多行 docstring
临时补救:用正则选中所有 def 行再折叠
当语法识别失败、又不想重启或换插件时,这是最快见效的兜底法。
操作流程:
-
Ctrl+F打开查找,输入正则^def\s,勾选Regex和Match case - 点
Find All,所有def行被选中(包括装饰器行,只要它匹配) - 按
Ctrl+Shift+[—— Sublime 会对每个选中行触发一次折叠动作,等效于“对每个函数起点执行折叠” - 注意:此法不处理
async def或带装饰器跨多行的情况,需手动补全选区
真正麻烦的不是快捷键记不住,而是语法识别一断,所有折叠逻辑就归零。每次遇到“折不了”,第一反应不该是查快捷键表,而是看右下角语言名、跑一遍 show_scope_name、再扫一眼缩进是否混用。











