sublime text 默认不保存折叠状态,重启后自动展开;需安装插件(如 autofold、codefold)并配置 remember_folds_on_load、fold_buttons 等选项,同时确保缩进统一、语法正确识别。

Sublime Text 默认不保存折叠状态
关掉文件再重开,所有手动折叠的函数、类、块都会自动展开——这不是你操作错了,是 Sublime 原生行为。它没有 fold_on_open 或 remember_folds 这类内置配置项,重启软件或重新加载文件后,折叠状态一律清零。
靠插件实现“伪持久化”折叠
目前唯一稳定可用的方案是安装支持折叠记忆的插件,但必须注意兼容性与副作用:
-
AutoFold:轻量,配置简单,但只对当前视图生效,多标签页切换时可能不同步 -
CodeFold或ExpandRegion:需在用户设置(Preferences → Settings)中显式启用:"remember_folds_on_load": true
,否则照样重置 - 插件对大文件(>10MB)或含大量嵌套结构的 Python/JS 文件可能拖慢启动速度,建议先在小项目验证
- 部分插件与旧版
CodeFolding冲突,若已安装后者,请先禁用再测试
侧边栏折叠按钮不显示?不是功能失效,是设置没开
即使插件生效、折叠状态被记住,左侧 gutter 仍可能看不到 ▶ 图标——这和持久化无关,纯属 UI 配置缺失:
- 必须在用户设置中添加两行:
"fold_buttons": true<br>"fade_fold_buttons": false
-
fade_fold_buttons默认为true,图标只悬停才出现;设为false才常驻可见 - 按钮只对语法识别出的结构生成(如
def、class、{),纯缩进块(如无大括号的单行 if)不会出按钮 - 若设置了仍不显示,先检查右下角是否为
Plain Text—— 语法未识别,按钮根本不会渲染
真正容易被忽略的细节
即使插件+设置全配齐,折叠状态仍可能“记不住”,原因往往藏在底层:
- 混用
Tab和Space缩进会让 Python 的def行无法被识别为meta.function作用域,导致折叠起点丢失——统一转为空格(View → Indentation → Convert Indentation to Spaces) - 文件语法被错误识别(比如 .py 文件右下角显示
Plain Text或Python Improved),所有基于作用域的折叠逻辑直接失效 - 某些自定义语法(如通过
.sublime-syntax添加的#region支持)未声明foldingStartMarker,插件无法捕获该区域,自然无法记忆











