sublime text 自带代码折叠功能,无需插件;仅当语法包未定义 foldingstartmarker 或需支持 // region 时才需插件。json/yaml/markdown 可手动补规则,// region 折叠推荐 codefold 插件,fold_selection 是最可靠的手动折叠方式。

Sublime Text 默认不依赖插件实现代码折叠
别急着搜“代码折叠插件”,Sublime Text 从 3.0 开始就自带折叠能力,foldingStartMarker 和 foldingStopMarker 是语法包里定义的规则,不是插件功能。装错插件反而可能干扰原生行为。
真正需要插件的场景只有两个:一是当前语言语法包没定义折叠(比如原生 JSON.sublime-syntax 就没折叠规则);二是你想用 // region 这类标记——这压根不是 Sublime 原生支持的语法,得靠插件解析。
- 先检查右下角状态栏显示的语法名是否正确,比如应为
JavaScript而不是Plain Text - 按
Ctrl+Shift+P→ 输入View Package File→ 选当前语言 → 搜索folding,看有没有foldingStartMarker定义 - 没定义?说明该语法默认不支持自动折叠,此时再考虑插件
JSON / YAML / Markdown 文件怎么启用折叠
这些格式在 Sublime 自带语法中默认无折叠支持,因为官方没写 foldingStartMarker。最稳妥的做法不是装插件,而是手动补规则。
以 JSON 为例:打开 Preferences → Browse Packages… → 进入 User/ 目录 → 新建 JSON.sublime-syntax 文件,内容如下:
%
%YAML 1.2
---
name: JSON
file_extensions:
- json
scope: source.json
contexts:
main:
- match: '\{'
push: object
- match: '\['
push: array
object:
- match: '\}'
pop: true
- match: ''
scope: meta.object.json
array:
- match: '\]'
pop: true
- match: ''
scope: meta.array.json
foldingStartMarker: '\{|\['
foldingStopMarker: '\}|\]'
%
保存后重启或重载语法,Ctrl+Shift+[ 就能折对象和数组了。YAML 同理,但需注意缩进层级 —— 折叠依赖 fold_by_level 设置,不是正则匹配。
- 别用网上搜到的“JSON Fold”类插件,多数已停止维护,且会和 Sublime 4+ 的
.sublime-syntax机制冲突 - Markdown 折叠更简单:开
"fold_by_level": true,然后靠标题层级(#、##)触发 - 所有手动补的语法文件必须放在
Packages/User/下,不能覆盖原包
想用 // region 折叠?装 CodeFold 插件最省事
// region 和 // endregion 是 VS Code 风格,Sublime 原生完全不识别。硬要支持,就得靠插件做正则扫描 —— CodeFold 是目前唯一持续更新、兼容 Sublime 4 的选择。
安装方式(必须用 Package Control):
- 按
Ctrl+Shift+P→ 输入Package Control: Install Package→ 回车 - 输入
CodeFold→ 选中并回车,等待安装完成 - 重启 Sublime 或手动执行
CodeFold: Reload Settings
写法示例:
// region utils
function debounce() { ... }
function throttle() { ... }
// endregion
注意:CodeFold 不影响原生折叠逻辑,它只响应注释标记;但若某行同时匹配原生规则和 region 标记,优先走原生(比如 JS 里的 function 行仍按函数块折叠)。
- 别配
fold_expression手动写正则——容易误折字符串内的// region,且每种语言都要单独调 - region 折叠不支持嵌套,
// region a里再写// region b会导致外层提前闭合 - 折叠后鼠标悬停显示的 label 是注释内容,所以写
// region API handlers比// region xxx更实用
fold_selection 是最可靠的手动折叠方式
遇到语法不支持、临时想收起日志片段或配置块,别折腾插件或改语法文件 —— 用 Sublime 内置的 fold_selection 命令,零配置、不依赖任何规则。
操作步骤极简:
- 鼠标拖选或多行选中(
Ctrl+L连续选)你要折叠的范围 - 按
Ctrl+Shift+[(Windows/Linux)或Cmd+Shift+[(macOS) - 折叠后光标移到
...上按Enter展开,或再次按快捷键尝试向外扩展折叠范围
这个命令的优先级高于所有语法折叠,且不会被插件劫持 —— 即使你装了十个折叠插件,它依然稳定生效。
容易忽略的点:折叠区域一旦创建,就和语法无关了;unfold_all(Alt+1)不会还原它,得手动点开或用 unfold 命令逐个展开。











