Atom中实现Markdown标题折叠无需插件,最可靠方式是用HTML的<details><summary>标签包裹内容;原生折叠需满足GitHub Markdown语言模式、严格缩进等条件,且折叠状态不持久保存。

Markdown-Folder 并不是 Atom 官方或主流生态中真实存在的插件——你在 Atom 的插件市场(atom.io/packages)或 GitHub 上搜不到它。你实际想找的,是利用 Atom 原生折叠能力 + Markdown 语法结构,对 ##、### 等标题层级做可展开/收起的组织管理。这不需要额外插件,但需要理解 Atom 如何识别折叠范围。
Atom 默认不把 Markdown 标题当折叠单元,得靠语言模式和缩进配合
Atom 的折叠逻辑基于「语法作用域(scope)」和「缩进层级」,而非语义。它不会自动把 ## 概述 当作一个可折叠节区,除非满足以下条件之一:
- 该标题下方内容有统一缩进(比如所有子内容缩进 2 或 4 空格),且启用了
editor:fold-at-indent-level行为(默认关闭) - 你手动用
<details><summary>...</summary>...</details>包裹内容——这是唯一能实现「标题+折叠体」语义联动的方式,且渲染时也支持(在预览插件如markdown-preview-enhanced中生效) - 安装了
markdown-header-fold这类小众插件(非官方维护,2026 年仍可用但更新停滞),它会扫描^#{1,6}行并注册为 foldable range
用 <details> 实现标题级折叠最可靠
这是目前在 Atom 中真正可控、跨预览与编辑双端一致的方案。它不依赖语言模式识别,也不受缩进混乱影响:
<details> <summary><strong>## 数据模型设计</strong></summary> <ul><li>字段定义:<ul><li><code>id</code>: string, required</li><li><code>status</code>: enum[active, archived]</li></ul></li><li>关系图:<code>User → hasMany → Order</code></li></ul><p></details>
注意点:
-
<summary>内可写 Markdown,但 Atom 编辑器里只显示纯文本(不渲染加粗/链接),而markdown-preview-enhanced预览时会正常渲染 - 不要在
<details>外再套其他块级元素(比如空行、>引用),否则可能破坏折叠边界 - 嵌套
<details>是合法的,但 Atom 不支持多层快捷键展开,只能靠鼠标点击
想用快捷键折叠标题?必须满足缩进 + 语言模式双重条件
如果你坚持用原生 Ctrl+K Ctrl+1 折叠,需确保:
- 右下角 language mode 显示的是
GitHub Markdown(不是Markdown或Plain Text)——前者由language-gfm提供,后者无折叠支持 - 标题后的内容严格缩进(例如
## API 调用后所有段落、列表、代码块都以 2+ 空格开头) - 未启用
soft wrap(软换行),否则缩进计算会错乱 -
core: closeDeletedFileTabs等配置不影响折叠,但editor:foldedHeight设为0可能导致折叠后看不见省略号
折叠状态关掉文件就丢,别指望它记住
Atom 不保存任何折叠状态到磁盘。哪怕你刚把 12 个 <details> 全部展开,重启 Atom 后它们全恢复默认闭合态。这不是 bug,是设计选择——因为折叠本质是 displayLayer 的临时映射,不参与 buffer 序列化。如果真需要持久化,唯一办法是用 project-manager 插件 + 自定义序列化脚本监听 editor:folded-ranges-changed 事件,但代价是打开大文档时延迟明显上升。

















