sublime代码折叠需满足语法识别、作用域匹配和光标位置三条件,右下角显示plain text时折叠完全失效;应手动设置语言、检查作用域、分步执行折叠命令,并注意手动折叠与自动折叠逻辑不兼容。

Sublime 的代码折叠不是“按了就折”,它必须满足语法识别、作用域匹配和光标位置三个条件,缺一不可。绝大多数“没反应”问题,根源都在右下角显示的 Plain Text 上。
Ctrl+Shift+[ 没反应?先看右下角语言名
这个快捷键只对明确识别为 Python、JavaScript、JSON 等语言的文件生效。如果右下角显示 Plain Text,整个折叠系统根本不会加载。
- 点击右下角文字 → 手动选为对应语言(如
Python) - 保存带扩展名的文件(如
main.py),Sublime 才会自动关联语法 - 若仍无效,检查是否装了冲突插件(如旧版
Vue Syntax Highlight),临时禁用再试 - 按
Ctrl+Shift+P→ 输入Developer: Show Scope Name,光标停在def行,看状态栏是否含meta.function;不含说明语法未正确解析
Ctrl+K, Ctrl+0 折不了全部?分步按且确认语法
这不是三键组合,是两步操作:先按 Ctrl+K 松开,再按 Ctrl+0(数字零,不是字母 O)。它调用 fold_all 命令,但只对已识别的作用域生效。
- 右下角必须是真实语言名,
Plain Text下该命令静默失败 - 文件过大(>10MB)时会短暂卡顿,属正常现象,不是失效
- HTML 中基本无效——它靠标签对而非作用域层级,想折
<div> 得用 <code>Ctrl+K, Ctrl+0或手动选区 - 按一次不等于“全折”,而是逐级折叠:再按一次才进下一层(如从函数层进到 if 层)
- 先手动用
Ctrl+Shift+[折一个函数,确认它被识别(左侧 gutter 出现 ▶) - 按
Ctrl+Shift+P→ 输入fold_by_level→ 回车 - 依次试数字
1、2、3:Python 通常从2开始有效,JS 常是3 - 装饰器跨行或 docstring 紧贴
def行会导致跳过,加空行可修复 - 鼠标拖选任意连续多行(含空行、注释、base64 字符串)
- Windows/Linux 按
Ctrl+Shift+Alt+[,macOS 按Cmd+Ctrl+Option+[ - 侧边栏立刻出现独立三角图标,点击即可展开/收起
- 该折叠仅存于当前会话,关闭文件即消失,但操作 100% 可控
- 注意:
Ctrl+K, Ctrl+J(unfold_all)不会还原它,得单独点侧边栏箭头
想只折函数,不碰 if/class?用 fold_by_level 命令
Ctrl+K, Ctrl+1 不等于“只折函数”,它折的是 fold_level = 1 的所有结构(包括顶层 if、import、__all__)。精准控制得靠命令面板。
任意几行都要收起来?用 fold_selection 最稳
这是唯一不依赖语法、不改设置、不装插件的兜底方案。适合 JSON 配置、日志段落、测试数据等非标准结构。
真正容易被忽略的是:折叠状态从不跨会话保存,重启 Sublime 就全展开;侧边栏按钮默认只悬停显示,要常驻得手动设 "fold_buttons": true 和 "fade_fold_buttons": false;混用自动折叠和手动折叠后,展开逻辑会割裂,别指望一个命令全恢复。











