Sublime代码折叠需满足语言识别、光标位于起始标记行(如def/class/{)、作用域定义三者齐备;Ctrl+Shift+[仅对起点行生效,Ctrl+K Ctrl+0可全局折叠但依赖语言识别,fold_by_level需实测层级,选区折叠最可靠且不依赖语法。

Sublime 的代码折叠快捷键不是“按了就折”,而是必须满足语言识别、光标位置、作用域定义三者齐备,否则静默失效。
Ctrl+Shift+[ 没反应?先确认光标停在哪一行
这个快捷键只对「起始标记行」生效,不是选中就折,也不是任意位置都能触发:
- 光标必须停在
def、class、if、for、function、{所在行——这些是语法定义的折叠起点 - 停在函数体内部(比如
print("x"))、空行、注释行、字符串里,或}行,都会不响应 - 右下角状态栏必须显示
Python、JavaScript等真实语言名;若显示Plain Text,整个折叠逻辑关闭 - 不确定作用域是否识别成功?按
Ctrl+Shift+P→ 输入Developer: Show Scope Name,停在def行看输出是否含meta.function
Ctrl+K, Ctrl+0 是真·一键收起全部,但必须分步按
这不是组合键,是两步操作:先按住 Ctrl+K 松开,再按 Ctrl+0(数字零,不是字母 O)。它调用 fold_all 命令,不依赖光标位置,但极度依赖语言识别:
- 若右下角是
Plain Text,命令静默失败,无提示 - 对大文件(>10MB)可能卡顿 1–2 秒,属正常,不是崩溃
- macOS 用户用
Cmd+K,Cmd+0,但注意某些系统级软件(如 Alfred、Karabiner)会劫持该组合,建议改用命令面板执行fold_all - 它会折叠所有语法支持的结构:函数、类、顶层
if、__all__ = []、甚至文档字符串块
想只折函数?别信 Ctrl+K, Ctrl+1,试试 fold_by_level
Ctrl+K, Ctrl+1 不等于“只折函数”,它折的是 fold_level = 1 的作用域,在 Python 中常是 import 和模块级赋值,而非 def。精准折函数得靠实测:
- 先手动用
Ctrl+Shift+[折一个函数,确认左侧 gutter 出现 ▶,说明被识别为函数块 - 按
Ctrl+Shift+P→ 输入fold_by_level→ 回车 - 依次试数字
2、3、1:Python 文件通常2有效,JS 常需3;输错无反馈,没反应就换下一个 - 装饰器跨行(如
@decorator换行写在def上方)或 docstring 紧贴def行会导致识别断裂,加空行可修复
任意几行都要收起来?手动选区折叠最稳,不依赖语法
当语法不支持、语言未识别、或你只想临时藏一段 JSON 配置 / 日志 / 测试数据时,这是唯一 100% 可控的方式:
- 鼠标拖选或多行选中(
Ctrl+L连续选行) - 按
Ctrl+Shift+Alt+[(Windows/Linux)或Cmd+Ctrl+Option+[(macOS) - 折叠后左侧 gutter 出现独立三角图标,点击即可展开,不影响其他自动折叠块
- 该操作调用
fold_selection,不看 scope、不依赖语法包、不改设置,关闭文件即消失
真正容易被忽略的点:折叠状态从不保存到磁盘,重启 Sublime 就全展开;侧边栏按钮默认悬停才显示,要常驻得手动设 "fold_buttons": true 和 "fade_fold_buttons": false;HTML 中 Ctrl+K, Ctrl+1 基本无效,想折 <div> 得用 <code>Ctrl+K, Ctrl+0 或手动选区。

















