Sublime需手动启用indentation_based_folding才能按缩进层级折叠:在语法专属设置中添加该选项,统一缩进格式并确保语法正确识别,否则折叠失效。

Sublime 默认不按缩进层级折叠,必须手动启用 indentation_based_folding
Sublime 的原生折叠逻辑只认语法结构(如 def、class、{),对 Python/JSON/YAML 中靠空格或 Tab 组织的多层缩进块默认无感知。想让 Ctrl+Shift+[ 折叠“缩进相同的一组行”,得显式开启该模式:
- 打开
Preferences → Settings – Syntax Specific(确保当前文件类型已正确识别,比如右下角显示Python) - 在右侧用户设置中添加:
"indentation_based_folding": true - 保存后,光标停在任意缩进行上,再按
Ctrl+Shift+[即可折叠该缩进层级及其所有子级
注意:该设置只对当前语法生效;若全局启用,可能干扰 JS/HTML 等依赖括号或标签语法的折叠行为。
Ctrl+K, Ctrl+N 折的是作用域层级,不是缩进层级
很多人误以为 Ctrl+K, Ctrl+2 是“折叠两层缩进”,其实它折叠的是语法定义中嵌套深度为 2 的 scope(比如 Python 中 def 常属 level 2,但装饰器跨行或 docstring 紧贴 def 行时,可能被识别为 level 3 或断裂)。这种折叠和空格数完全无关。
- 验证函数是否被识别为 level 2:光标停在
def行,按Ctrl+Shift+P→ 输入Developer: Show Scope Name,看输出是否含meta.function.python - 输错数字(如
Ctrl+K, Ctrl+9)不会报错,只是静默失败 - 若
Ctrl+K, Ctrl+2对函数无效,大概率是作用域识别断裂,而非快捷键问题
多层缩进折叠失效?先检查缩进一致性与语法识别
缩进混用(Tab + 空格)会导致 Sublime 解析中断,整个缩进块的作用域消失——此时 indentation_based_folding 也无从生效。
- 统一为 4 空格:菜单
View → Indentation → Convert Indentation to Spaces - 确认右下角状态栏显示真实语言名(如
Python),不是Plain Text - 若仍不生效,临时用
fold_selection手动选中多行后按Ctrl+Shift+Alt+[(Windows/Linux)应急
折叠 JSON/YAML 配置等纯缩进结构,indentation_based_folding 是唯一可靠方案
JSON 和 YAML 没有 def 或 { 这类语法标记,原生折叠基本不可用。靠缩进组织层级时,必须依赖 indentation_based_folding。
- 对 JSON 文件,建议单独设置语法专属配置:打开
Preferences → Settings – Syntax Specific,选中当前文件类型后添加"indentation_based_folding": true - 折叠后,侧边栏出现 ▶ 图标;点击即可展开,再次按
Ctrl+Shift+[会尝试向父级扩展折叠范围 - 该折叠仅存在于当前会话,关闭文件即丢失,不写入磁盘
真正麻烦的不是怎么折,而是缩进一乱、语法一错、作用域一断,折叠就彻底失联——这些底层条件比快捷键本身更关键。

















