Sublime代码折叠需同时满足三条件:文件被识别为支持语言、语法定义含折叠标记、光标位于合法起始行;否则Ctrl+Shift+[等操作无效。

Sublime 的代码折叠不是“设个开关就自动工作”的功能,它是否生效,完全取决于当前文件是否被正确识别为支持折叠的语言、语法定义是否含折叠标记、光标是否落在合法起始行——三者缺一不可。
为什么 Ctrl+Shift+[ 按了没反应?先查右下角和光标位置
这个快捷键只对「可折叠结构的起始行」有效,不是全选就能折,也不是任意位置按一下就行:
- 光标必须停在
def、class、function、{、if(带冒号和缩进块)等语法定义的起始标记所在行;停在}行、空行、注释行、字符串内部,命令静默失败 - 右下角状态栏必须显示真实语言名(如
Python、JavaScript),若显示Plain Text,整个折叠系统不启动 - 不确定当前行是否被识别为可折叠?按
Ctrl+Shift+P→ 输入Developer: Show Scope Name,看输出里有没有meta.function、meta.block这类带meta.的作用域 - Python/YAML 文件混用 Tab 和空格缩进,会导致函数作用域解析中断——统一用空格:
View → Indentation → Convert Indentation to Spaces
想一键收起全部?用 Ctrl+K, Ctrl+0,但必须分步按
这不是三键组合,是两步操作:先按住 Ctrl+K 松开,再按 Ctrl+0(数字零,不是字母 O)。它调用的是 fold_all 命令,不依赖光标位置,但极度依赖底层条件:
- 右下角必须是有效语言(
Plain Text下完全静默失效) - 文件过大(>10MB)时可能延迟响应或卡在状态栏,属正常现象,不是崩溃
- 某些插件(如
BracketHighlighter)会劫持Ctrl+K前缀,临时禁用插件后重试可验证 - Mac 用户对应的是
Cmd+K, Cmd+0,别用Ctrl键
只想折函数,不碰 if/for/类?试试 fold_by_level
Ctrl+K, Ctrl+1 不是“只折函数”,而是 fold_all(level=1),它折叠所有被语法定义为 level 1 的结构(可能包含 class、if __name__ == "__main__":,但不一定全是函数)。真正可控的是 fold_by_level:
- 先确认一个
def行能被Ctrl+Shift+[正常折叠(左侧 gutter 出现 ▶) - 按
Ctrl+Shift+P→ 输入fold_by_level→ 回车 → 依次试2(Python 通常)、3(JS/TS 常见) - 输错数字无提示,静默失败;装饰器跨行或 docstring 紧贴
def行会导致跳过,加空行可修复 - 嵌套函数(如
def outer(): def inner():)需额外执行一次fold_by_level 3
任意几行都要收起来?用 fold_selection 最稳
这是唯一绕过语法解析、缩进校验和折叠规则的方式,100% 可控:
- 鼠标拖选任意连续多行(JSON 配置、日志、注释、base64 字符串都行)
- Windows/Linux 按
Ctrl+Shift+Alt+[,macOS 按Cmd+Ctrl+Option+[ - 侧边栏立刻出现独立三角图标,点击即可展开/收起
- 该折叠仅存于当前会话,关闭文件即丢,不写入磁盘;
Ctrl+K, Ctrl+J(unfold_all)不会还原它,得单独点开 - 侧边栏没三角图标?检查设置中是否启用了
"fold_buttons": true
最容易被忽略的其实是缩进一致性——哪怕只有一处 Tab 混入空格,Python 文件的函数作用域就可能整体消失,后续所有折叠操作都会失效。别急着改快捷键,先盯住右下角和光标位置。

















