sublime text 3无“自适应代码折叠”开关,其折叠能力依赖语法识别(右下角非plain text)、fold_buttons启用及光标位于合法起始行(如def/function/{所在行),手动选中任意行按ctrl+shift+alt+[可强制折叠。

Sublime Text 3 没有叫“自适应代码折叠”的独立功能开关——所谓“自适应”,其实是语法识别、作用域解析和用户设置三者协同的结果。只要右下角语言标识正确、fold_buttons 开启、光标停在合法起始行,折叠就会自动响应结构变化,无需额外“开启”。
为什么右下角显示 Plain Text 就折不了
折叠逻辑完全依赖语法定义文件(如 Python.sublime-syntax)中是否声明了 foldingStartMarker。Plain Text 模式下没有该定义,整个折叠引擎不加载,所有快捷键静默失效。
- 点击右下角文字 → 手动选为
Python、JavaScript、JSON等原生支持语言 - 保存文件时务必带扩展名(如
main.py),否则 Sublime 不触发自动语法匹配 - 若仍显示错误名称,检查是否安装了冲突插件(如旧版
Vue Syntax Highlighter),临时禁用后重启
折叠按钮不显示?检查这两个设置项
即使语法识别正确,侧边栏没 ▶ 图标,说明 UI 层被关了。打开 Preferences → Settings,右侧用户设置中必须包含:
{
"fold_buttons": true,
"fade_fold_buttons": false
}
- 若存在
"fold_enable": false,直接删掉或改为true - 某些插件会悄悄覆盖设置,建议全文件搜索
fold_enable和fold_buttons确认值 - 修改后无需重启,但需切换一次标签页或重新加载语法(如切到其他文件再切回)
Ctrl+Shift+[ 按了没反应?先看光标在哪一行
这个快捷键只对「当前可折叠块的起始行」生效,不是选中就折,也不是全文件通用。
- 必须停在
def func():、function foo() {、if x:、{所在行 - 不能停在
}行、空行、注释行、字符串内部、或缩进混用(tab + 空格)的行上 - 不确定是否命中?按
Ctrl+Shift+P→ 输入Developer: Show Scope Name,状态栏若含meta.function或meta.block才算识别成功
想折任意几行?别等语法支持,直接手动选中
这是最稳定、零配置、100% 可控的方式,完全绕过语法定义和作用域识别:
- 鼠标拖选任意连续多行(哪怕全是 JSON 配置、日志或注释)
- 按
Ctrl+Shift+Alt+[(Windows/Linux)或Cmd+Ctrl+Option+[(macOS) - 侧边栏出现独立小箭头,点击即可展开/收起;关闭文件即消失,但当前会话始终有效
真正容易被忽略的是:折叠状态不持久、不写入文件,且所有“自动”行为都建立在语法包未被插件破坏的前提下——一旦装了多个语法增强插件,优先级冲突比设置错误更难排查。











