sublime text 折叠功能依赖语法作用域识别与手动控制,右下角语言标识、光标位置、缩进统一(空格)是前提;ctrl+shift+[ 仅在 def/class/if 等起始行生效,plain text 模式下完全失效;fold_by_level 按作用域深度折叠,非语义层级;fold_selection 是唯一任意选区强制折叠方式。

Sublime Text 没有“开启智能折叠”的开关,所谓“智能”其实是语法作用域识别 + 手动控制组合的结果;真正卡住你的是右下角的 Plain Text、光标停错行、或混用 Tab 和 Space 缩进——这些不解决,任何快捷键都静默失败。
为什么 Ctrl+Shift+[ 按了没反应?先看右下角和光标位置
这个快捷键只对「当前可折叠结构的起始行」生效,不是全选就能折,也不是任意位置按一下就行:
- 光标必须停在
def、class、if(带冒号和缩进块)、function、{所在行;停在函数体内部、空行、注释行、字符串里,命令直接忽略 - 右下角状态栏必须显示
Python、JavaScript等真实语言名;若显示Plain Text,整个折叠逻辑不会加载 - 验证是否识别成功:光标停在
def行,按Ctrl+Shift+P→ 输入Developer: Show Scope Name,状态栏应含meta.function.python或类似作用域标识 - Python 文件混用
Tab和Space会导致作用域链断裂,统一转为空格:View → Indentation → Convert Indentation to Spaces
Ctrl+K, Ctrl+0 折不全?它根本不是“一键全折”,而是 fold_all 遍历已识别块
这个命令不保证收起所有你想看到的结构,它只折叠当前语法定义中明确标记为可折叠的部分:
- 必须分步按:
Ctrl+K松开 → 再按Ctrl+0(数字零,非字母O);三键同时按无效 - 若右下角是
Plain Text,fold_all不执行,也不报错,只是静默跳过 - 文件 >10MB 时响应延迟属正常,不是崩溃;插件如
BracketHighlighter可能劫持Ctrl+K前缀,临时禁用可验证 - 它会把顶层
if、__all__ = []、模块级注释甚至 JSON 根对象全收掉,不适合只想看函数签名的场景
想只折函数?别信 Ctrl+K, Ctrl+1,用 fold_by_level 实测
Sublime 没有原生“仅函数”命令,Ctrl+K, Ctrl+N 折的是作用域嵌套深度(scope level),不是语义层级:
- 先确认一个
def行能被Ctrl+Shift+[正常折叠(否则fold_by_level必然无效) - 按
Ctrl+Shift+P→ 输入fold_by_level→ 回车 → 依次试2(Python 多数情况)、3(JS/TS 常见)、1;输错无提示,没反应就换下一个 - 装饰器跨行(如
@decorator单独一行紧贴def)或 docstring 紧挨def行(def f(): """doc"""; pass),会导致作用域识别跳过,加空行可修复 - 嵌套函数(
def outer(): def inner():)需额外执行一次fold_by_level 3
任意几行都要收起来?fold_selection 是唯一 100% 可控的方式
这是绕过语法识别、缩进校验和折叠规则限制的兜底方案,适合日志、配置块、base64 字符串等非标准结构:
- 鼠标拖选任意连续多行(支持跨函数、跨注释、跨 JSON)
- Windows/Linux 按
Ctrl+Shift+Alt+[,macOS 按Cmd+Ctrl+Option+[ - 左侧 gutter 立即出现独立三角图标,点击即可展开/收起,不影响其他自动折叠块
- 该折叠仅存于当前会话,关闭文件即丢,不写入磁盘;
Ctrl+K, Ctrl+J(unfold_all)不会还原它,必须单独点击展开
最易被忽略的一点:侧边栏没三角图标,不是折叠失效,而是 UI 被关了——检查用户设置里是否有 "fold_buttons": true,且没被插件意外覆盖为 false 或 "fold_enable": false。











