Ctrl+K, Ctrl+0 折叠全部但漏块,主因是语法识别不完整:若右下角显示非原生语法(如 Plain Text)、作用域缺失(如 def 行无 meta.function)、文件后缀异常(.pyi/.j2)、缩进混用(Tab+空格),均导致 fold_all 静默跳过;fold_selection 可绕过语法限制强制折叠选中区域。

Ctrl+K, Ctrl+0 折叠全部但漏掉某些块?先确认语法识别是否完整
这个命令调用的是 fold_all,但它只折叠当前语法定义中已声明的可折叠作用域。如果右下角显示 Plain Text 或 Python Improved 这类非原生语法,fold_all 会静默跳过大部分结构——比如 Python 的 def 行没被识别为 meta.function,就不会折。
验证方法:光标停在 def foo(): 行,按 Ctrl+Shift+P → 输入 Developer: Show Scope Name,看状态栏是否含 meta.function。不含?说明语法包没加载或作用域规则缺失。
常见干扰项:
-
fold_buttons设为false不影响fold_all执行,但你会看不到左侧折叠图标,误以为没生效 - 文件后缀不标准(如
.pyi、.j2)导致 Sublime 没自动绑定语法,fold_all直接失效 - 混用 Tab 和空格缩进(尤其 Python/YAML),破坏语法解析链,函数作用域无法建立
想只折函数/类,避开 if/for 块?别依赖 Ctrl+K, Ctrl+0
Ctrl+K, Ctrl+0 是逐级触发的:第一次按 ≈ 折 level 1(顶层 def/class),再按才进 level 2(内部 if)。它不是“语义过滤”,不会区分“函数”和“条件块”——只要语法定义把它们放在同一层,就一起折。
真正可控的是 fold_by_level 命令,但数字得实测:
- 先手动用
Ctrl+Shift+[折一个函数,确认它被识别为函数块(而非缩进块) -
Ctrl+Shift+P→ 输入fold_by_level→ 回车 → 依次试2、3、1 - Python 文件通常从
2开始;JS 中function常在 level 3,但箭头函数可能不被识别 - 装饰器跨行、docstring 紧贴
def行会导致跳过,加空行可修复
非代码内容(JSON/日志/配置)怎么快速收起?用 fold_selection 最稳
这是唯一绕过语法解析、缩进校验和 foldingStartMarker 规则的方式。它不看语言,只认你选中的行范围。
操作流程:
- 鼠标拖选任意多行(支持空行、注释、JSON 对象、base64 字符串)
- Windows/Linux 按
Ctrl+Shift+Alt+[,macOS 按Cmd+Ctrl+Option+[ - 侧边栏立刻出现独立三角图标,点击即可展开,不影响其他自动折叠块
注意两点:
- 该折叠仅存于当前会话,关文件即丢,不写入磁盘
- 不能和
fold_all混用:Ctrl+K, Ctrl+J(unfold_all)不会还原它,得单独点侧边栏箭头
折叠后找不到展开入口?检查 fold_buttons 和光标位置
即使 fold_all 或 fold_selection 成功执行,若左侧 gutter 没出现三角图标,大概率是 UI 层被关了。
打开 Preferences → Settings,右侧用户设置中必须有:
"fold_buttons": true
若还常自动淡出,可加:
"fade_fold_buttons": false
另外,Ctrl+Shift+] 展开当前块时,光标必须落在折叠标记行(即带 ▶ 的那行),停在折叠后显示的 ... 12 lines 文字上是无效的。
容易被忽略的一点:大文件(>10MB)下 fold_all 可能延迟 1–2 秒响应,状态栏短暂卡住属正常现象,不是失败。

















