Sublime代码折叠需语法识别、光标位于可折叠结构首行(如def/{/)、作用域标记三者齐备;Ctrl+Shift+[仅在此条件下生效,否则静默失效。

Sublime 的代码折叠快捷键不是“按了就折”,而是必须满足语法识别、光标位置和作用域标记三者齐备,否则静默失效。
Ctrl+Shift+[ 没反应?先确认这三件事
这个快捷键只对「当前光标所在行的最内层可折叠起点」生效,不是全选就折,也不是任意位置都能触发:
- 光标必须停在
def、class、if、function、{或 HTML 开始标签(如<div>)所在行——这些行左侧 gutter 才可能出现 ▶ <li>右下角状态栏必须显示真实语言名(如 <code>Python、JavaScript),显示Plain Text或空白时,整个折叠逻辑不加载 - 不能停在函数体内部某行(比如
print("x"))、空行、注释行、字符串里,否则按键无响应 - 必须分步操作:先按住
Ctrl+K松开,再按Ctrl+0(数字零,不是字母 O) - 会折叠所有顶层结构:Python 中的
def、class、if __name__ == "__main__":、import;JS 中的function、{块;HTML 中的标签对 - 若按下后无反应,90% 是状态栏为
Plain Text;文件 >10MB 时可能卡顿 1–2 秒,属正常 - 先手动用
Ctrl+Shift+[折一个函数,确认它被识别(gutter 出现 ▶) - 按
Ctrl+Shift+P→ 输入fold_by_level→ 回车 → 依次试2、3(Python 文件通常从 2 开始,JS 常是 3) - 输错无提示,没反应就换下一个;装饰器跨行或 docstring 紧贴
def行会导致跳过,加空行可修复 - 鼠标拖选或多行选中(
Ctrl+L连续选行) - 按
Ctrl+Shift+Alt+[(Windows/Linux)或Cmd+Ctrl+Option+[(macOS) - 折叠仅存于当前会话,关闭文件即消失;但左侧 gutter 会出现独立三角图标,点击即可展开,不影响其他自动折叠块
Ctrl+K, Ctrl+0 是真·一键收起全部
它调用的是 fold_all 命令,不依赖光标位置,直接遍历当前视图所有已识别的可折叠结构:
想只折函数?别信 Ctrl+K, Ctrl+1,试试 fold_by_level
Ctrl+K, Ctrl+1 折的是作用域嵌套深度为 1 的结构(如 Python 的 import 区),通常不包括函数;真正可控的是命令面板里的 fold_by_level:
任意几行都要收起来?手动选区折叠最稳
当语法不支持、语言没定义折叠规则、或你只想临时藏一段 JSON/日志/测试数据时,这是唯一 100% 可控的方式:
真正容易被忽略的点是:折叠状态从不保存到磁盘,重启 Sublime 就全展开;侧边栏按钮默认只悬停显示,要常驻得手动设 "fold_buttons": true 和 "fade_fold_buttons": false;而所有这些功能,底层都依赖语法文件是否定义了 foldingStartMarker ——不是 Sublime “猜”出来的,是写死在 .sublime-syntax 里的。











