jackweigogoga1 downloadsEdit Markdown notes as XMind-style mind maps. Headings and list items become nodes, and edits on either side stay in sync.
XMind 风格的思维导图插件。Markdown 是唯一数据源:标题和列表就是节点,脑图视图只是同一个 .md
文件的另一种编辑器,改哪边另一边都跟着变。零运行时依赖,桌面端和移动端都能用。

[!tip] 想快速上手,把
docs/下的两篇复制进 vault: Mind Map 使用指南 用脑图打开就是一张可以点开、可以折叠的功能地图, 插件的每个能力都在上面,而且用它自己演示了一遍;它链到的 脑图代码块嵌入示例 则是一篇插了两块mindmap的普通笔记。
mindmap: true。```mindmap 代码块,块内写同样的 Markdown,阅读模式和实时预览都会渲染成一张小图。
默认只读;点工具栏的铅笔或双击节点进入编辑,改动直接写回这个代码块,撤销重做也只作用于块内。.xmind 文件放进 vault 直接打开:只读渲染,多工作表可切换,右上角一键转换为 Markdown 笔记。
XMind Zen / 2020 之后的 content.json 和 XMind 8 的 content.xml 都支持。<br> 存在标题或列表项里,阅读模式照常渲染。[[笔记|原文]];
新建的笔记在右侧分栏打开。已链接的节点再按 ⌘K 可打开或取消链接。按住 ⌘ 悬停有页面预览。mindmap-theme,按文件生效;设置里可改新文件的默认主题。每个主题都配了深色模式。$E=mc^2$ 渲染成公式;![[图片.png|160]] 或  渲染成缩略图,
数字参数是宽度,选中后拖右下角手柄改大小。备注里的代码块带语法高亮。导出 PNG/SVG 时公式和图片都会内嵌。[ ] 事项 渲染成复选框,点击在未完成、完成、去掉之间切换。#标签 渲染成标签样式,点击打开全局搜索。[文字](https://…) 或直接粘一个裸网址都会成链,点击用浏览器打开;句尾标点不会被吃进去。<iframe …> 直接粘进节点就渲染成播放器。只认 iframe 这一个标签、src 必须是 http(s),属性另行解析后用 DOM API 建元素,不写 innerHTML;默认不自动播放(渲染时补 autoplay=0,笔记原文不动;想自动播就自己写 autoplay=1),折叠着的分支不加载。备注里也能放,走 Obsidian 自己的渲染器。
播放器上盖了一层挡板,单击只是选中节点,双击画面或点右下角的「激活」按钮才放行,避免顺手一点就跳去源站;激活的节点带一圈虚线,点别处自动收回。
选中后右下角的手柄能拖着改大小(默认锁宽高比,Shift 单独拉高度,双击恢复 560×315)。[[链接]] 子节点,拖入或粘贴图片会存到附件目录并生成图片节点。[[笔记#标题]],列表节点自动补块 id 给 [[笔记#^id]],别的笔记里可以引用。---
mindmap: true
mindmap-structure: mindmap # 可选:logic-right(默认)| mindmap | org-down | tree-right
mindmap-theme: rainbow # 可选:snow(默认)| rainbow | business | warm | mono | line | forest
---
# 中心主题 ← 唯一的一级标题;没有就用文件名
这里的段落是中心主题的备注。
## 主主题 %%green%% ← %%颜色%% 给节点上色,阅读模式里看不见
### 子主题
- 更深的层级用列表
- 再深一层
- 折叠状态也存在文件里 %%fold%%
red orange yellow green teal blue purple pink gray,或 #hex。| 键 | 作用 |
|---|---|
| Tab | 添加子节点 |
| Enter | 添加兄弟节点(根节点上是添加子节点);Shift+Enter 插到前面 |
| 双击 / 空格 / F2 | 编辑;Enter 提交,Esc 取消 |
| Delete / Backspace | 删除选中的节点及其子树 |
| ⌘F | 搜索节点,Enter / Shift+Enter 跳转 |
| ⌘C / ⌘X / ⌘V | 复制 / 剪切 / 粘贴子树 |
| Shift+Enter(编辑中) | 节点内换行 |
| ⌘K | 链接到笔记 / 新建笔记 |
| Alt+↑↓ / Alt+←→ | 兄弟间排序 / 升级降级 |
| Shift+点击 / ⌘+点击 / Shift+拖拽 / ⌘A | 加选 / 反选 / 框选 / 全选 |
| 拖拽节点 | 换父节点或调整顺序 |
| / | 折叠、展开 |
| 方向键 | 在节点间移动 |
| ⌘Z / ⌘⇧Z | 撤销 / 重做 |
| 滚轮 / 拖拽空白处 | 平移 |
| ⌘+滚轮 / 双指捏合 / ⌘= ⌘- | 缩放;⌘0 适应画布 |
pnpm install
pnpm test # Markdown 往返与布局的单元测试
pnpm typecheck
pnpm build # 产物在 dist/main.js
pnpm install-vault # 复制到 JackWei vault(OBSIDIAN_VAULT=... 可覆盖)
pnpm harness # 监听构建 dev/harness.js,然后用任意静态服务器打开 dev/index.html
pnpm gen-bench 3000 # 生成压测用的大脑图笔记到 vault 的 inbox
3000 节点(Obsidian 桌面端实测,优化后):打开 195ms,单次渲染 11ms,打字时每次重排 7ms,
平移每帧 0.2ms,折叠到第二层 55ms,导出 PNG 785ms。1000 节点分别是 53ms / 2ms / 1.6ms / 0.2ms / 10ms。
渲染按节点 id 复用 DOM,只重建内容变了的元素;连线复用 path 只改 d;打字时只重新测量正在编辑的节点。
dev/index.html 是脱离 Obsidian 的调试页,能切主题、结构、深色模式,并实时打印写回的 Markdown。
| 文件 | 职责 |
|---|---|
src/markdown.ts |
Markdown ⇄ 树,往返无损 |
src/model.ts |
树模型与增删移操作 |
src/layout.ts |
布局引擎(逻辑图 / 左右分布)与连线几何 |
src/canvas.ts |
渲染、平移缩放、选择、内联编辑、键盘 |
src/view.ts |
Obsidian 的 TextFileView,负责读写文件与撤销栈 |
src/main.ts |
视图注册与重定向、命令、代码块(含写回)、菜单 |
src/codeblock.ts |
在宿主笔记里定位并替换 mindmap 代码块 |
src/export.ts |
SVG / PNG 导出,内嵌字体 |
src/xmind.ts |
.xmind 读取(自带 zip 与 XML 解析)→ Markdown |
src/xmind-view.ts |
.xmind 只读视图与转换 |
src/outline.ts |
大纲面板 |
src/note-picker.ts |
链接笔记的选择器弹窗 |
src/theme.ts |
主题注册表:连线形状、分支色、下划线层级、间距 |
src/icon.ts |
插件自带的脑图图标(Phosphor tree-structure) |
src/icon-picker.ts |
设置里的图标选择器,可搜索、可用 emoji |
src/icon-value.ts |
图标取值的纯逻辑(前缀、emoji 判定) |
src/property-icon.ts |
属性面板里 icon 一行的预览,点它可选图标 |
styles.css |
主题变量与各主题的 [data-theme] 配色块,跟随 Obsidian 明暗模式 |
推 tag 即发布:git tag 0.3.1 && git push --tags(tag 必须与 manifest.json 的 version 完全一致,不带 v),GitHub Actions 会构建并把 main.js、manifest.json、styles.css
挂到 Release。用 BRAT 的人填仓库地址就能装;手动安装把这三个文件放进
<vault>/.obsidian/plugins/gogoga-mindmap/。运行时不需要 Node。
MIT,见 LICENSE。