Sublime 默认不支持按缩进自动折叠,需手动启用 indentation_based_folding;启用后可通过 Ctrl+Shift+[ 折叠缩进块,或用 fold_by_level 按层级折叠,手动选区折叠最可靠。

Sublime 默认不支持按缩进自动折叠
它只认语法定义的结构(如 def、class、{、if),不是看到 4 个空格就自动当一层来折。想靠缩进层级触发折叠,必须手动启用 indentation_based_folding,否则所有“按缩进收起”的尝试都会静默失败。
启用 indentation_based_folding 的正确姿势
这个设置不生效,90% 是因为加错了位置或语言不匹配:
- 先确保右下角状态栏显示的是真实语言名(如
Python),不是Plain Text;点它手动选一次 - 打开
Preferences → Settings – Syntax Specific(注意:不是主 Settings) - 加入这行:
"indentation_based_folding": true
- 保存后,光标停在任意有缩进行(比如函数体第一行),按
Ctrl+Shift+[就能折叠该缩进层级下的全部子块 - 全局启用?可以加到主
Settings,但会干扰 JS/HTML 等依赖括号或标签的语法折叠,慎用
折叠到第 N 层缩进?得靠 fold_by_level + 实测
Ctrl+K, Ctrl+1 这类快捷键里的数字不是“缩进空格数”,而是作用域深度。但开启 indentation_based_folding 后,fold_by_level 命令会更贴近缩进语义:
-
Ctrl+Shift+P→ 输入fold_by_level→ 回车 - 输入
2:通常对应顶层缩进(如函数体内部的第一级缩进块) - 输入
3:再往里一层(如 for 循环体内的 if 块) - 输错数字无提示,只是没反应;建议从 2 开始试,逐步加 1
- 混用 Tab 和空格会导致缩进断层,折叠跳过部分块 → 先执行
View → Indentation → Convert Indentation to Spaces
手动选区折叠是最稳的兜底方案
当缩进不规范、语法识别失败,或你只想临时藏一段 JSON / 日志 / 注释时,fold_selection 不看任何规则,只认你鼠标拖的那几行:
- 鼠标拖选任意连续多行(支持跨函数、跨注释、跨空行)
- 按
Ctrl+Shift+[(Windows/Linux)或Cmd+Option+[(macOS) - 折叠后,把光标移到左侧 gutter 的 ▶ 上按
Enter可展开;再次按快捷键会向外扩展折叠范围(比如从 5 行扩到包含其父级的 8 行) - 这个操作不会被语法、缩进、插件劫持影响,是唯一 100% 可控的折叠方式
真正麻烦的不是怎么设,而是缩进格式不统一和语法识别失效这两个点——它们会让所有基于缩进的折叠行为变得不可预测。每次遇到“按了没反应”,先看右下角语言名、再查缩进是否混用,比反复试快捷键快得多。

















