Ctrl+K, Ctrl+1到Ctrl+K, Ctrl+8按语法作用域嵌套层级折叠,非缩进空格数;Ctrl+K, Ctrl+0是fold_all,一次性折叠所有可折叠结构;Mac上Cmd+K, Cmd+0易被系统级软件劫持,建议用命令面板执行。

Ctrl+K, Ctrl+1 到 Ctrl+K, Ctrl+8 是按作用域层级,不是缩进级
很多人以为 Ctrl+K, Ctrl+2 是“折叠两层缩进”,其实它折叠的是语法定义中嵌套深度为 2 的作用域(比如 Python 里 def 块通常是 level 2,if 块可能是 level 3)。这个数字和缩进空格数无关,只和当前语言语法文件里 meta.function、meta.conditional 等 scope 的嵌套层级有关。
常见表现:
-
Ctrl+K, Ctrl+1在 Python 中常只折import和顶层赋值,不碰class或def(因为它们在更深的 scope) -
Ctrl+K, Ctrl+2对多数 Python 文件能收起所有函数定义,但若用了装饰器跨行或 docstring 紧贴def,部分函数可能被跳过 -
Ctrl+K, Ctrl+8并非“最深”,而是尝试折叠到语法支持的最大层级;超出则静默失败,不会报错
为什么 Ctrl+K, Ctrl+2 有时只折一半函数?
根本原因不是快捷键问题,而是作用域识别断裂。Sublime 折叠依赖语法高亮器输出的 scope 链,一旦链断,fold_by_level 就无法定位目标块。
检查方法:光标停在某个 def 行,按 Ctrl+Shift+P → 输入 show_scope_name 回车,看状态栏输出:
- 正常应含
meta.function.python—— 说明函数作用域识别成功 - 若只显示
source.python—— 说明语法包未加载或被插件干扰 - 若显示
source.python meta.decorator.python但没meta.function—— 装饰器写法(如换行写@decorator)导致解析中断
修复建议:统一用空格缩进、避免装饰器与 def 之间无空行、禁用冲突插件(如旧版 Python Improved)。
Ctrl+K, Ctrl+0 和 Ctrl+K, Ctrl+1 完全不是一回事
Ctrl+K, Ctrl+0 是 fold_all,遍历整个文件,把所有语法定义的可折叠结构(函数、类、标签对、顶层注释块)一次性收起;而 Ctrl+K, Ctrl+1 是 fold_by_level,只处理指定嵌套深度的作用域,更精准也更脆弱。
典型差异:
-
Ctrl+K, Ctrl+0会把__all__ = [...]、文档字符串块、甚至if __name__ == "__main__":全部折叠,适合快速概览骨架 -
Ctrl+K, Ctrl+1若配置得当,可只折import区,留出class和def可见,适合模块结构审查 - 两者都要求右下角显示明确语言名(如
Python),显示Plain Text时均无效
Mac 上 Cmd+K, Cmd+0 经常失灵?优先走命令面板
macOS 下 Cmd+K, Cmd+0 极易被 Alfred、输入法(如搜狗)、甚至某些杀软拦截,按下后毫无反应,不是 Sublime 问题,是系统级快捷键劫持。
保底操作路径:
- 按
Cmd+Shift+P打开命令面板 - 输入
Fold All或Fold Level 2,回车执行 - 若需重复操作,可将常用命令绑定到自定义快捷键(Preferences → Key Bindings),避开
Cmd+K前缀
注意:Cmd+K, Cmd+0 中的 0 是数字零,不是字母 O;输错不会报错,只是静默失效 —— 这是最容易被忽略的硬性前提。


















