atom默认不保存折叠状态,需插件如nuclide-file-tree或save-session实现持久化;editor:fold-all无效常见因language mode错误、语言包未支持folding标记、光标位置不当或文件过大触发性能降级。

Atom 默认不保存折叠状态,重启就全展开——这不是 bug,是设计如此。要持久化,必须手动配置或装插件。
为什么 editor:fold-all 按了没反应
常见错误现象:editor:fold-all 命令在命令面板里搜得到、也能执行,但实际没折叠任何代码块。
- 当前文件 language mode 错误(右下角显示
Plain Text而非JavaScript等),导致语法包不加载折叠逻辑 - 所用语言包未实现
foldingStartMarker/foldingStopMarker(比如旧版language-javascript不识别可选链?.后的大括号边界) - 光标不在可折叠结构内部(例如停在
function foo() {这行开头,而非{后面的缩进区) - 文件过大(>10k 行)且启用了
foldingStrategy: "indent",触发性能降级,跳过语法分析直接放弃折叠
如何让 /* #region */ 可折叠
Atom 不原生支持 region 注释折叠,需靠语言包或配置补全。
- 优先安装带 region 支持的语法包:如
language-babel或atom-typescript,它们内置了对// #region和/* #region */的正则匹配 - 若用官方
language-javascript,可在config.cson中强行注入:"core": customFileTypes: "source.js": [ "region" "endregion" ]但注意:这仅让 Atom 把含
region的行当作文本标记,不保证折叠行为正确;重启 Atom 才生效 - 避免全局设
foldingStrategy: "indent"——它会无视所有注释标记,只按空格/TAB 层级折,容易把if块和注释混折
折叠状态怎么跨重启保留
Atom 本身不存折叠状态,nuclide-file-tree 或 atom-project-manager 类插件才能做到。
- 装
nuclide后,在Settings > Nuclide > File Tree勾选Remember file folding state,状态存在~/.nuclide/sessions/ - 更轻量方案:用
project-folder+save-session插件组合,后者能序列化displayLayer.folds到 JSON,但需确认其兼容 Atom 1.60+ - 纯配置方式不可行——
text-editor.js中的折叠数据存在内存对象displayLayer里,没暴露持久化接口 - 项目级差异要注意:不同 repo 可能依赖不同语言包版本,同一份
config.cson在 A 项目生效,在 B 项目失效,得逐个验证language-xxx是否启用折叠
真正麻烦的不是“怎么折”,而是“谁来记着它被折过”。语法包决定能不能折,插件决定记不记得住,而光标位置决定你第一次按快捷键时到底折不折得动——这三个点串不起来,所有技巧都卡在第一下。










