NodeMD 使用指南
NodeMD 会把 Markdown 层级转换为可编辑的思维导图。本指南只介绍当前 Web UI 已经实现的功能。
启动 NodeMD
Docker
在仓库根目录执行:
docker compose up --build -d打开 http://localhost:4173。停止服务:
docker compose downDocker 提供的就是可以部署到 HTTPS 后面的同一套静态 Web UI。默认 Compose 文件只绑定宿主机回环地址;如需发布到网络,请使用明确的 override,并放在 HTTPS 反向代理后面。它不会额外增加 API、数据库、账户或文档存储。修改代码、依赖、Dockerfile 或打包资源后,需要再次使用带 --build 的命令。
从源码运行
使用 Node.js 24.16.0,并通过 Corepack 使用 pnpm:
corepack pnpm install --frozen-lockfile
corepack pnpm dev开发服务器地址是 http://127.0.0.1:4173。
新建或导入画布
打开左上角的项目菜单。
新建画布
新建画布会创建一个只有中心节点的新画布。当前画布有修改时,NodeMD 会先询问是否替换。
点击画布空白区域可以取消当前选择。底部操作栏随后会显示添加一级节点;Shift+A 执行相同操作。
打开 Markdown
选择打开 Markdown 文件会直接打开系统文件选择器;也可以把受支持的文件拖到画布任意位置:
.md和.markdown会打开为可编辑脑图;.nodemd会恢复可编辑项目,包括样式和稳定 ID。
文件只由浏览器读取,不会上传到 NodeMD 服务端。
项目菜单中的打开样例脑图可以随时恢复内置的可编辑示例;替换其他本地画布前,NodeMD 会先确认。
如果完整文档是受支持的 Mermaid flowchart / graph 源码,或全文只包含一个 fenced Mermaid 流程图,NodeMD 会把它投影成普通的可编辑脑图。Mermaid 节点 ID 会继续作为稳定的 NodeMD 节点 ID;流程/判断形状和箭头会被有意忽略。自上而下的 TD / TB 流程图会把根节点放在左侧、分支向右展开,同时按源文顺序从上到下排列;边标签则成为节点说明。多根、多父节点和循环等单棵树无法完整表达的关系会产生映射提示,但所有节点和原始源文都会被保留。遇到不支持的语句时,会在替换当前画布前报告具体行号。混合 Markdown + Mermaid 和多个 block 不会被选择性抽取。
下面的示例会生成一个中心主题、标题分支、嵌套列表节点、任务节点和说明:
# 发布计划
> 从需求到上线
> 让关键决策保持可见
## 调研
> 验证风险最高的假设
- 访谈用户
> 听用户用自己的语言描述情境
- 汇总结论
## 交付
- [ ] 准备发布说明主要映射规则如下:
| Markdown | 画布 |
|---|---|
| 唯一 H1 | 中心节点 |
| H2 与 H3 | 标题分支 |
紧接在标题后的一条或多条简单 > 引用 | 该标题节点的说明 |
| 兼容的标题后相邻普通段落 | 该标题节点的说明 |
| 有序或无序列表项 | 子节点 |
列表项内直接的一条或多条简单 > 引用 | 该列表节点的说明 |
| 兼容的列表项内第二个直接段落 | 该列表节点的说明 |
| 嵌套列表 | 更深层子节点 |
| GFM task | 以 [ ] 或 [x] 开头的节点文字 |
标题文字仍是节点的主要内容,每条映射引用都是独立说明,不会创建子节点或改变树层级。简单 blockquote 是明确的说明格式;相邻普通段落继续兼容导入。复杂的引用内容仍保留在原始源文中,并会产生映射提示,不会静默丢弃。
没有 H1 或存在多个 H1 时,文件名会成为合成中心节点。标题跳级和其他不支持的 block 会产生映射提示。不支持的 block 不会投影成节点内容,但导入源文会在当前会话中保留,并在导出包中作为 .original.md 附带。
单次 Markdown 或 Mermaid 导入上限为 500,000 个字符、500 个节点、2,000 条 Mermaid 边和 100 的最大树深度。单个 .nodemd 项目最多包含 5,000 个节点,project.json 最大 8 MiB,归档文件最大 12 MiB。
选择、编辑和整理节点
- 点击节点进行选择。
- 点击画布空白区域,清除节点或手动线选择。
- 双击节点主标题、选择编辑文字或按
F2行内编辑主标题。 - 双击某一条说明只编辑该条补充内容;按
Enter保存,按Escape取消。 - 编辑标题时按
Shift+Enter插入明确的视觉换行。 - 编辑标题时按
Enter完成。
自动模式下,中心/根节点和一级分支默认保持单行,并随标题内容横向增长。缩短标题后,外框会回收到舒适的最小宽度,不会保留旧的空白。二级及更深节点仍保持紧凑宽度,并可自动折行。
如需用桌面鼠标直接在画布上设置固定宽度,把指针悬停到当前布局和列对齐方式下仍可移动的节点边缘;出现横向缩放光标后直接拖动,无需提前选中。根节点左右两边都可以拖动。普通分支只开放不会破坏列对齐的一边:朝向中心和居中时是外侧边缘;背离中心会固定外侧列基准,因此可移动边缘可能切换到内侧。连接圆点与边缘重叠时,圆点优先,拖动圆点仍会开始连线。固定宽度会让标题按所选宽度换行。使用触控或键盘时,先选中节点,再在节点框中输入精确宽度,或点击适应内容恢复自动尺寸。使用 Shift+Enter 加入的明确视觉换行仍会保留。
新建空节点会在清晰可见的外框中以合适的工作宽度打开,即使还没有文字,输入区域也容易看见、点击和调整样式。编辑过程中它们会保留在画布上;只有 NodeMD 生成结构化导出文件时才会省略空节点。
每个节点还可以携带多条说明,而不会增加树层级。选中节点,打开左侧的内容面板,然后在说明中每行输入一条。按 Ctrl/Cmd+Enter 或移开焦点后批量应用。每行会显示为独立的说明条:在画布上双击某一条只编辑这一条,清空时也只删除当前说明。两到三条短说明会在同一行并列;内容较长或达到四条及以上时自动使用单列;F2 仍编辑主标题。
画布上方居中的状态条会显示当前对象。节点进入行内编辑时,状态会从当前选择切换为正在编辑。底部操作栏会随选择变化:
- 没有选择:添加一级分支;
- 选择节点:编辑、复制、添加子节点、添加同级节点、连接、折叠/展开(可用时)或删除;
- 选择手动线:删除该线。
中心节点可以添加子节点,但不能删除、复制或添加同级节点。
查找并定位节点
点击右下角画布控制中的查找节点,或在焦点不位于输入框、选择框或可编辑字段时按 Ctrl/Cmd+F。查找面板会显示在画布上方中央;点击面板外的灰色画布、按 Escape 或点击关闭按钮都可以退出。面板会搜索完整文档中的节点标题、稳定 ID 与说明;结果也包括当前藏在折叠分支里的后代。选择结果后面板会自动关闭,让居中的目标节点保持可见。
选择结果后,NodeMD 会展开其祖先、按准确的稳定 ID 选择节点,并将其居中。若可见层级原本隐藏了该结果,控件会恢复为显示全部层级。其他时候,可见层级可以选择全部或 1–6,通过折叠更深分支调整当前视图;这不会删除节点,也不会重新分配 ID。
使用可访问树键盘导航
画布会把当前可见层级公开为 ARIA tree。该画布树而不是文字编辑器或其他控件获得焦点时:
ArrowDown/ArrowUp按逻辑先序选择下一个 / 上一个可见节点。ArrowRight会展开折叠分支并保持选择;分支已展开时进入第一个直接子节点,叶节点上不执行操作。ArrowLeft会折叠已展开的非根分支并保持选择;其他时候回到父节点,无法折叠的根节点上不执行操作。Home/End选择首个 / 末个可见逻辑节点。F2编辑当前节点主标题;Escape退出行内编辑,并把焦点还给画布树。
添加节点
Shift+A给所选节点添加子节点;没有选择时添加一级分支。Tab给所选节点添加子节点。- 未编辑文字时,
Enter给所选非根节点添加同级节点。
每个新节点都会立即进入行内编辑。新的一级分支会从当前导图主题获得初始填充色、边框色与分支线颜色,因此即使没有文字也清晰可见并可调整样式。
复制分支
Shift+D或Ctrl/Cmd+D复制所选非根子树。两个端点都位于该子树内的手动线,也会映射到副本。Ctrl/Cmd+Shift+D还会复制子树与外部节点之间的有效跨界线。
手动线按无向端点对去重,不会产生相同端点的重复线。
折叠与删除
H折叠或展开具有子节点的所选非根分支。X、Delete或Backspace会优先删除所选手动线,否则删除所选分支或独立根节点。删除独立根会移除整棵子树,撤销可以恢复;主中心节点始终受保护。
编辑文字时,这些画布快捷键不会触发,因此可以正常输入和删除字符。
添加、编辑与切断连线
自动父子分支表示 Markdown 树。手动连线用于增加视觉关系,不会改变树层级。
拖拽连线
- 直接从任意节点左侧或右侧的连接点开始拖动,无需提前选择源节点。
- 其他可见节点会保持连接点可用;移到目标连接点,等待预览线吸附。
- 松开创建连线。把独立子树重新挂到标准中心节点时,左/右连接点决定新分支落在对应一侧;松到中心节点对应的左/右半区效果相同。
连接点默认保持可见。使用右下角画布控制或左侧画布面板中的始终显示连接点,可以切换为“仅所选节点显示”,NodeMD 会在本地记住该视图偏好。屏幕窄于 374px 时,右下角的重复快捷按钮会隐藏,画布面板的开关仍然可用,其他控件也能继续保持 44px 命中区。该偏好只影响平时的画布显示;开始拖线后,候选目标的连接点会临时出现,松开或取消后恢复原偏好。可见圆点直径最大为 14px,外层透明命中区最大为 48px;总览缩放时圆点会随之缩小,避免压过紧凑节点。
普通节点之间拖线会创建手动连线,不改变 Markdown 树。切断自动分支后,可从独立根节点的连接点拖到另一棵树中的节点,整棵子树会作为真正的子节点重新挂接。标准中心节点一端使用的左/右连接点决定新分支方向;挂到普通节点时,独立树会成为其子节点并沿用所在分支方向。系统不会创建手动线,生成的 Markdown 会采用新的层级。主题自动颜色会跟随新的父分支与层级,手动样式仍会保留。撤销会恢复独立根,重做会再次挂接。普通手动线不会锁定固定端口,节点移动或重新排版后会根据几何位置从合适的一侧重新路由。
在空白处松开会取消;不能连接节点自身。如果同一无向端点对已经存在,NodeMD 会选择已有连线,而不是重复创建。
用键盘连线
选择源节点后按 F,再点击目标节点完成。再次按 F 或按 Escape 可取消。
选择、改样式、删除或切断连线
点击手动连线进行选择。左侧工具栏随后只修改该线的颜色与宽度。自动父子分支通过选择其子节点来调整样式,不会作为手动线单独选中。
Delete、Backspace或X删除所选手动线。- 按住
Ctrl并用右键划过一条或多条连线。指针会变成裁刀,并用红色轨迹预览切割范围;松开后切断所有相交的线。 - 相交的手动线会被删除;相交的自动父子分支会保留子节点及其后代,把该子树变成独立根节点/思维导图,并自动移到原导图上方或下方的空白区域,避免主树重新排版后两张导图重叠。画布随后会重新取景,确保独立子树仍完整可见。
切线操作会显示五秒钟的定制撤销,切断自动分支也同样支持。请在提示消失前、或进行下一次文档编辑前使用。
调整节点与连线样式
左侧工具栏始终提供导图主题与画布背景面板。选择节点后会显示内容、文字、节点框、连线、效果五组对象面板;选择手动线后则调整当前线。
导图主题
导图主题改变的是图中内容的配色,与深浅界面模式相互独立。当前提供 纸张、光谱、彩虹、极光、海洋、森林、日落、莓果、大地、石墨 10 套预设;其中极光组合蓝、绿、紫与金黄,光谱保留 #2563EB、#0F766E、#D97706、#7C3AED、#BE185D 和 #475569 六色方案。
所有主题的中心节点都保持 #333333。每条分支会在自动线、边框和后代浅色填充中沿用同一识别色。应用主题时还会选择保证可读性的文字色,并一起更新手动线。
内置课程 demo 默认使用彩虹主题演示视觉层级。中心节点保持深灰;一级分支使用实色色板和白字;更深节点使用与画布有明确区分的浅色填充与深色文字,同时保留分支识别色。中心和一级分支会显示说明,因此补充信息不需变成新的节点层级。
随机惊喜
点击主题面板顶部的随机惊喜,会立即应用浏览器本地生成的 1,024 套色板之一。生成和选择都在浏览器内完成,因此离线可用,也不会调用 AI 或远程服务。NodeMD 会在当前浏览器中记住最近显示的 20 套随机色板,并在下一次选择时避开它们。
随机结果与其他主题遵循相同规则:中心保持 #333333,分支颜色、后代浅色、连线和可读文字色都由色板自动推导。
导入自制主题
创建一个很小的 .json 文件,再点击主题面板中的导入主题。有效主题会立即应用,并保存在当前浏览器与站点来源的本地主题列表中。
{
"name": "Night Signal",
"colors": ["#2563EB", "#0F766E", "#D97706"]
}文件需包含 3–12 个互不重复的颜色,每个颜色使用 #RGB 或 #RRGGBB Hex 格式,字母大小写不限。palette 也可以作为 colors 的别名:
{
"name": "Field Notes",
"palette": ["#256", "#C96", "#746"]
}这些颜色只需表达分支色相,不必手写完整 CSS。NodeMD 会维持 #333333 中心节点,并自动推导一级填充、边框、自动连线、后代浅色和可读文字色。保存 .nodemd 项目时会嵌入当前导入或随机主题的完整色板,因此重开项目不依赖本机主题列表。Markdown 导出只包含内容与层级,不保存颜色或其他视觉样式。
导图布局
新建画布和普通 Markdown 导入默认使用双侧布局。自上而下的 Mermaid TD / TB 导入则默认使用仅右侧,让投影后的树从左向右阅读。双侧布局中,NodeMD 会把前面的一级章节放在左侧、后面的放在右侧;总数为奇数时,左侧多一个章节。每一侧都从上到下保持源文顺序。
点击右下角画布控制中的单个导图布局图标,会按双侧 → 仅右侧 → 仅左侧 → 双侧循环。图标显示当前布局,提示文字同时说明当前及下一种状态。该设置会应用于画布上的所有导图根,包括独立根,但不会连接这些独立根。每次点击都是一次可撤销的画布操作,适应画面会重新取景。
相邻的单个同级列对齐图标会按朝向中心 → 居中 → 背离中心 → 朝向中心循环,调整每个层级的节点框体列对齐;默认是朝向中心。双侧导图会以根节点为轴左右对称:朝向中心让两侧内边缘分别对齐,背离中心让两侧外边缘对齐,居中则对齐节点中心。固定宽度节点在列对齐时仍保留用户所选宽度。.nodemd 项目与浏览器恢复会保存分支布局和同级列对齐。Markdown 不保存这两种视觉选择,因此所有模式导出的 Markdown 都维持相同的标题和列表顺序。
画布背景
打开左侧的画布面板,可通过常用色、Hex 输入或系统拾色器设置精确背景色。网格对比度按实际底色自动适配,因此浅色界面中使用深色自定义画布也能看清。自定义背景不会随界面深浅切换而改变;点击跟随明暗模式可恢复自动背景。
NodeMD 不只保存当前生效的颜色,也会保存背景模式。浏览器恢复或重新打开 .nodemd 后,自动背景仍会继续跟随后续的明暗切换,自定义颜色则保持固定。对于背景模式字段出现前生成的项目,NodeMD 会把已知的默认浅色与深色背景识别为自动模式,让旧的本地存档恢复正常的主题跟随行为。
SVG、PNG 和项目包会使用当前生效的画布背景;编辑网格只是工作区辅助,不会进入导出图片。
内容
使用说明在节点主标题下补充多行信息。它们与主标题和树层级分开保存,每个输入行会整理为一条可独立编辑的说明。两到三条短说明会自适应为两列或三列,内容密集时保持整行单列。说明的字体样式会跟随节点和分支配色,保持次于主标题的信息层级。
Markdown 仍是内容源:标题后紧邻或列表项内直接出现的每条简单 > 引用都会成为一条说明。相邻普通段落仍可兼容导入;生成 Markdown 时,每条说明都会单独输出为 > 引用。JSON sidecar 只记录外观,不会复制这份内容。
文字
- 文字颜色:十个常用色、三位或六位 Hex,或系统拾色器;
- 字体:系统字体,以及 Inter、Roboto、Poppins、Space Grotesk、Lora、Merriweather、Roboto Mono、Noto Sans SC 和 Noto Serif SC;
- 字号:
8–72 px; - 字重:
100–900,步进10。
Google 字体只在选中后请求;离线时使用对应的系统后备字体。导出会等待当前浏览器完成字体加载,但 SVG 只记录 CSS 字体名称,不会把字体文件嵌入其中,因此无法保证在另一台设备上得到完全一致的字形。
节点框
- 节点宽度:固定为
80–2048 px,或点击适应内容恢复自动尺寸; - 外框填充色与边框色;
- 圆角:
0–48 px; - 文字到外框的水平内边距:
0–48 px; - 文字到外框的垂直内边距:
0–32 px。
精确宽度输入框与画布上的可拖动边缘修改的是同一个固定宽度。使用桌面鼠标时,把指针悬停到可移动边缘,出现横向缩放光标后即可直接拖动,无需先选择节点。普通分支只开放当前列对齐方式下仍可移动的一侧;根节点左右两侧都可以拖动,控件重叠时连接圆点优先。使用触控或键盘时,先选中节点,再使用精确宽度输入框或适应内容;后者会清除固定宽度,重新由内容决定外框大小。
圆角、内边距和阴影作用于文字外面的框,而不是字形本身。内边距会进入布局、点击区域、连线位置和导出几何。
外框边框色与连线颜色相互独立;修改其中一个不会改变另一个。
新建一级分支会取得当前主题中的下一个颜色。更深的子节点和同级节点保留所属一级分支的色相,同时采用主题的浅色后代填充与可读文字色。之后手动修改样式不会让已有后代自动跟随。
连线
选择节点时,该面板修改它的自动分支颜色和宽度,宽度范围为 0.5–12 px。
选择手动连线时,独立连线面板只修改当前这条线。
效果
外框阴影有四档:无、小、中、大。
样式会进入浏览器本地恢复、.nodemd 项目,以及导出的 JSON、SVG 和 PNG 快照。
移动画布
- 中键拖动:像 Blender 一样平移;也可以继续使用
Alt+ 左键拖动。 - 触摸板双指滚动:平移画布。
- 滚轮:以指针位置为中心缩放;
Ctrl/Cmd+ 滚轮仍然兼容。 +/-(含数字键盘):以上次指针位置为中心放大 / 缩小。- 右下角控件:循环导图布局和同级列对齐、切换常驻连接点、缩小、在宽屏显示当前比例、放大、适应整个画面和画布全屏。视口宽度不超过
1600 px时会隐藏比例文字和装饰分隔线,使操作栏保持紧凑;窄于374 px时还会隐藏重复的连接点快捷按钮,左侧画布面板开关仍然可用。其余图标控件保持 44px 命中区。向内收拢图标负责适应画面,四角图标负责全屏;再次点击或按Escape退出。
适应画面由右下角向内收拢的按钮触发;画布树聚焦时,Home 用于可访问树导航。适应画面会把整张图缩放到可用画布视口内。小图最高放大到 150%,并随视口变化在外缘保留 32–64 px 的响应式边距。适应画面会使用完整画布,只有需要避让左侧浮动工具栏时才偏移居中位置。节点使用画布坐标而不是 rem 或 vw;由视口缩放负责自适应,以保持布局与导出几何一致。宽幅导图放在竖屏中时仍可能上下留白,因为适应画面会保持导图宽高比并确保所有节点完整可见。
保存与恢复可编辑项目
通过保存 NodeMD 项目下载 <名称>.nodemd,再用打开 NodeMD 项目重新打开并继续编辑。v1 思维导图项目会保留:
- 稳定的节点与连线 ID;
- 主标题(包括显式加入的视觉换行)、说明、层级、独立根节点、根位置和折叠状态;
- 分支布局、同级列对齐、固定节点宽度、节点/连线样式、手动连线、画布主题,以及自动或自定义的画布背景模式;
- 缩放比例和 viewport 原点;
- 生成的结构 Markdown,以及导入时逐字保留的原始 Markdown 与文件名。
旧 v2 流程图项目继续兼容读取;新的 Mermaid Markdown 导入使用上文所述的普通脑图项目路径。
NodeMD 会先校验 ZIP 容器、project.json、schema 版本、节点 ID、样式字段和连线端点,再安装任何状态。损坏文件、未知版本、重复 ID 或悬空连线都不会修改当前画布。
NodeMD 会在 IndexedDB 中自动保存“当前可编辑项目”(包括显式加入的标题视觉换行、固定节点宽度与同级列对齐),并保留最近 5 个有效本地旧版本。同一站点来源、同一浏览器 profile 可在刷新或浏览器重启后恢复,也可以通过恢复之前版本处理误编辑;恢复旧版本不会删除更新的历史。多个标签页的改动不会自动合并:过期标签页会被阻止覆盖较新的保存,需刷新后继续。这份短期恢复历史不是项目列表或云同步。清除站点数据、隐私模式、其他 profile/浏览器或不同部署来源不会共享这些恢复数据;下载的 .nodemd 才是便携备份。
自动保存使用两条写入通道。内容、结构、样式、连线等文档变化会生成完整项目 checkpoint;平移或缩放只写入最新的 viewport zoom 与原点,不改变 checkpoint 的 savedAt,不改动文档数据,也不会在最多 5 个版本的恢复历史中增加记录。刷新后仍会恢复最后的 viewport。
如果导入的 Markdown 含有未在画布完整表达的源内容,本地保存状态旁会持续显示 Markdown 映射报告。打开后可以查看每条提示的类型、源行号(如有)与详情,也可选择下载原始 Markdown。居中的报告可通过关闭按钮、Escape 或点击弹窗外的画布遮罩关闭。完整源文和诊断都会经过浏览器恢复与 .nodemd 往返保留。
导出快照
通过项目菜单导出:
- SVG:可缩放矢量快照;
- PNG:先按最高 2× 请求,必要时自动降低比例,使任意一边不超过 8,192 px、总像素不超过 16,000,000;
- Markdown:当前树状结构;
- 样式 JSON:当前标识、外观和手动连线;
- 项目包:
<名称>.nodemd.zip。
尺寸非法或浏览器栅格化/编码失败时会明确报告导出错误,不会生成空白或不完整的 PNG。
压缩包内容:
| 文件 | 内容 |
|---|---|
<名称>.md | 当前非空主标题、说明与树层级;每个非空的独立根节点生成自己的 H1 章节 |
<名称>.nodemd.json | 文档/根节点标识、独立根节点 ID、保留节点的外观、画布外观和手动连线 |
<名称>.svg | 当前矢量快照 |
<名称>.png | 当前位图快照 |
<名称>.original.md | 未改动的导入源文,仅在画布来自 Markdown 时存在 |
.nodemd.zip 是产物快照。NodeMD 不会导入其中的 .nodemd.json sidecar,也不会把该压缩包重新打开成可编辑项目;项目往返请使用 .nodemd。思维导图生成的 Markdown 只保留结构,不是对导入源文的无损重写;标题中显式加入的换行在生成的 Markdown 中会整理为空格,浏览器恢复与 .nodemd 则会把它们保留为视觉格式。坐标、固定节点宽度、同级列对齐和其他视觉样式仍保存在 JSON/.nodemd 中。sidecar 是外观元数据,不是第二份内容源。
生成的 Markdown 会让每个非空的独立根节点生成自己的 H1 章节,并省略所有主标题为空的节点。空根节点或空节点下如果有主标题不为空的后代,这些后代会提升到下一个保留层级。只有说明的空节点不会进入结构 Markdown。中心节点为空时不会生成 H1,其保留的后代会成为顶层列表项;整个画布都为空时会生成空 Markdown 文件。JSON sidecar 会记录独立根节点 ID 及保留样式,同时省略空的非根节点外观条目。SVG 与 PNG 仍是所见即所得快照,因此可以显示画布上尚未完成的内容。
快捷键速查
左下角折叠的快捷键按钮可打开画布内速查。下列画布快捷键在画布而不是文字输入框获得焦点时生效。画布 ARIA tree 聚焦时,导航遵循当前可见的逻辑层级;标题编辑快捷键则在行内编辑器激活时生效。
| 输入 | 操作 |
|---|---|
Shift+A | 添加子节点;没有选择时添加一级分支 |
Tab | 添加子节点 |
Enter | 给所选非根节点添加同级节点 |
双击主标题 / F2 | 编辑节点主标题 |
编辑标题时按 Shift+Enter | 插入明确的视觉换行 |
编辑标题时按 Enter | 完成编辑 |
编辑标题时按 Escape | 退出编辑,并把焦点还给画布树 |
| 双击说明 | 只编辑该条说明;Enter 保存,Escape 取消 |
Shift+D / Ctrl/Cmd+D | 复制子树及其内部手动线 |
Ctrl/Cmd+Shift+D | 复制子树,并保留与外部节点之间的有效连线 |
F | 开始或取消两次点选连线 |
H | 折叠或展开所选分支 |
X / Delete / Backspace | 删除所选手动线,否则删除所选分支或独立根节点;主中心节点始终受保护 |
Ctrl/Cmd+Z | 优先执行可见的定制撤销,否则撤销 Plait 文档历史 |
Ctrl/Cmd+Shift+Z | 重做最近一次画布操作 |
Escape | 取消拖线/切线,并清除手动线选择 |
Ctrl/Cmd+F | 焦点不在输入框、文本域、选择框或可编辑字段内时,打开查找节点 |
ArrowDown / ArrowUp | 按逻辑树顺序选择下一个 / 上一个可见节点 |
ArrowRight | 折叠分支上展开并保持选择;已展开分支上进入第一个直接子节点 |
ArrowLeft | 已展开的非根分支上折叠并保持选择;否则回到父节点 |
Home / End | 选择逻辑树中的首个 / 末个可见节点 |
中键拖动或 Alt + 左键拖动 | 平移 |
| 触摸板双指滚动 | 平移 |
| 滚轮 | 以指针为中心缩放 |
+ / -(含数字键盘) | 以上次指针位置为中心放大 / 缩小 |
Ctrl + 右键拖动 | 显示裁刀并切断相交的手动线或自动父子分支线 |
浏览器测试覆盖
Chromium 运行完整自动化 E2E。CI 还会在 Firefox 与 WebKit 中运行一个有边界的 smoke 场景,覆盖应用启动、短高度项目菜单、ARIA tree 与搜索导航,以及小尺寸 PNG 导出。这些 smoke 检查不等同于完整 Chromium 套件。
持久化边界
- 画布修改不会写回导入的 Markdown。结构 Markdown 只保存内容与层级,不保存固定节点宽度、同级列对齐或其他视觉样式。
.nodemd项目与浏览器恢复会保留固定节点宽度、同级列对齐,以及画布背景是自动还是自定义。浏览器恢复覆盖当前可编辑思维导图及最近 5 个本地版本,并限定于同一浏览器 profile 与站点来源。- 只有 viewport 变化的自动保存会恢复最新 zoom 与原点,但不改变
savedAt,也不增加恢复历史记录。 .nodemd.zip和其中导出的 JSON sidecar 仍只是产物;.nodemd才是可重新打开的项目格式。- 没有服务端文档存储。
清除站点数据或迁移到其他浏览器、profile、设备、部署来源前,请下载 .nodemd 项目。