Ctrl+K, Ctrl+0 失效主因是语法未识别:右下角为 Plain Text/Unknown Syntax、文件无后缀或后缀不标准、自定义语法缺 foldingStartMarker 均导致折叠逻辑跳过;缩进混用、大文件、插件冲突亦会干扰。

Ctrl+K, Ctrl+0(Windows/Linux)或 Cmd+K, Cmd+0(macOS)是 Sublime Text 中唯一真正遍历整份文档、折叠所有顶层可折叠结构的原生命令——但它不是“按下就生效”的傻瓜操作,失效时不会报错,只会静默忽略。
为什么 Ctrl+K, Ctrl+0 没反应?先看右下角语法标识
这个命令完全依赖语法识别,Plain Text 模式下它根本不会启动折叠逻辑:
- 右下角显示 Plain Text、Unknown Syntax 或空白?→ 折叠规则未加载,命令直接跳过
- 文件无后缀(如临时粘贴的代码片段)或后缀不标准(如 .conf、.tpl)?→ Sublime 默认不关联折叠语法
- 已安装自定义语法包(如 Python Improved),但未明确定义 foldingStartMarker?→ 即使高亮正常,折叠也可能缺失
Ctrl+K, Ctrl+0 和 Ctrl+K, Ctrl+1 的本质区别
两者调用的是不同底层命令,行为差异明显:
- Ctrl+K, Ctrl+0 调用 fold_all,尝试折叠所有被语法标记为可折叠的顶层结构(函数、类、模块级 if、for、JSON 根对象等)
- Ctrl+K, Ctrl+1 调用 fold_by_level 且固定 level=1,只折语法定义中嵌套深度为 1 的块(可能只是 import 或 if __name__ == "__main__":,不一定含函数)
- 别指望 Ctrl+K, Ctrl+1 “只折函数”——它不认语义,只认语法文件里写的 fold_level: 1
缩进不一致会直接让函数“消失”在折叠系统里
尤其 Python/YAML/JSON 等依赖缩进的语言:
- 混用 Tab 和 Space?→ 语法解析中断,def 行不被识别为 meta.function,fold_all 自动跳过该块
- 解决方案:菜单栏 View → Indentation → Convert Indentation to Spaces(或统一转 Tab)
- 文件 >10MB?→ fold_all 可能卡顿或延迟响应,属 Sublime 内部限流机制,非崩溃
- 插件冲突(如 BracketHighlighter 劫持 Ctrl+K 前缀)?→ 临时禁用插件,或改用命令面板:Ctrl+Shift+P → 输入 Fold All 回车
语法失效时,用正则选中 + 手动折叠最稳
当 show_scope_name 返回只有 source.python(无 meta.function),说明作用域识别已崩,此时:
- Ctrl+F 打开查找 → 正则模式勾选 → 输入 ^def\s|^class\s|^function\s|^[a-zA-Z]+\s*=\s*function\s*\(.*\)\s*\{
- Find All → 所有函数/类定义行被高亮选中
- 按 Ctrl+Shift+[ → Sublime 对每个选中行单独触发一次折叠,等效于“批量折函数”
- 注意:该法绕过语法解析,但无法折叠 if、for 等非起始关键词结构
真正容易被忽略的点是:折叠状态从不跨会话保存,重启 Sublime 就全展开;而侧边栏折叠按钮(gutter 三角)默认是否显示,取决于用户设置里有没有 "fold_buttons": true —— 这个开关不打开,即使折叠成功,你也看不到左侧图标。

















