Sublime代码折叠需满足三前提:文件被识别为有效语言(非Plain Text)、语法定义含foldingStartMarker、光标位于可折叠起始行;否则Ctrl+Shift+[等操作无效。

Sublime 的代码折叠不是“打开就生效”的功能,它必须满足三个前提:文件被正确识别为某种语言(右下角显示 Python、JavaScript 等,**不能是 Plain Text**)、当前语言的语法定义里有 foldingStartMarker 规则、光标落在可触发折叠的起始行上。缺一不可。
Ctrl+Shift+[ 没反应?先看右下角和光标位置
这个快捷键只对「当前最内层可折叠结构的起始行」生效,不是全选就能折,也不是任意位置按一下就行:
- 光标必须停在
def、class、function、{、if(带冒号和缩进块)等起始标记所在行;停在}行、空行、注释行、字符串内部,命令静默失败 - 右下角状态栏必须显示真实语言名(如
Python),若显示Plain Text,整个折叠系统不启动 - 不确定当前行是否被识别为可折叠?按
Ctrl+Shift+P→ 输入Developer: Show Scope Name,看输出里有没有meta.function、meta.block这类带meta.的作用域 - 缩进混用(Tab + 空格)会让 Python/YAML 解析中断,函数作用域直接消失——统一用空格:
View → Indentation → Convert Indentation to Spaces
想只折函数或按层级控制?用 fold_by_level
原生没有 fold_all_functions 命令,Ctrl+K, Ctrl+0 会把顶层 if、import、注释块甚至 JSON 根对象全收掉。真正可控的是 fold_by_level:
- 先确认一个
def行能被Ctrl+Shift+[正常折叠(左侧 gutter 出现 ▶) - 按
Ctrl+Shift+P→ 输入fold_by_level→ 回车 → 依次试2、3、1(Python 通常从2开始,JS/TS 常需3) - 输错数字无提示,静默失败;装饰器跨行或 docstring 紧贴
def行会导致跳过,加空行可修复 -
Ctrl+K, Ctrl+1不是“只折函数”,而是 fold_all(level=1),它折叠所有被语法定义为 level 1 的结构(可能包含class、if __name__ == "__main__":,但不一定全是函数)
语法不支持或想临时藏一段配置?用 fold_selection
这是唯一绕过语法解析、缩进校验和折叠规则的方式,100% 可控:
- 鼠标拖选任意连续多行(JSON 配置、日志、注释、base64 字符串都行)
- Windows/Linux 按
Ctrl+Shift+Alt+[,macOS 按Cmd+Ctrl+Option+[ - 侧边栏立刻出现独立三角图标,点击即可展开/收起
- 该折叠仅存于当前会话,关闭文件即丢,不写入磁盘;
Ctrl+K, Ctrl+J(unfold_all)不会还原它,得单独点开
侧边栏没三角图标?检查 fold_buttons 设置
折叠功能正常,但 UI 层按钮被关了:
- 打开
Preferences → Settings,右侧用户设置中必须有:"fold_buttons": true - 建议同时加:
"fade_fold_buttons": false,避免按钮自动淡出难发现 - 某些插件(如旧版 Vue Syntax Highlighter)会覆盖语法定义,导致作用域丢失;临时禁用插件后重启 Sublime,看三角是否回归
-
"fold_enable": false会彻底禁用折叠——删掉这行或改成true,全文搜索确认没被插件悄悄写入
真正卡住人的,往往不是“怎么折”,而是“为什么这行明明有 { 却折不动”——问题几乎总出在语法识别、作用域层级或光标位置这三个环节,而不是功能本身失效。

















