中文 | English
童童思维导图(TTmap:Text To Map),专为 AI 设计的纯文本格式的思维导图,方便 AI 读写。
TTmap思维导图特点如下:
-
tab 缩进表示层级,且只有一个根节点,其余行至少一个tab开头
-
文本用html标签表示样式
-
以明文纯文本保存为
.ttmap格式 -
可用文本编辑器编辑,也可用ttmap可视化编辑
- 多标签页:可同时打开多份导图,各自独立维护文档树、选中态、撤销栈
- 最近文件:自动记录最近打开的 10 份文档,无活动文档时在欢迎页快速打开
- 自动保存:已有路径的文档防抖 300ms 落盘,同时持久化折叠状态
- 搜索:
Ctrl+F打开搜索框,可搜索折叠子树中的节点文字,命中后自动展开祖先并居中 - 框选多选:左键在空白处拖拽框选,
Ctrl+点击增删多选成员,支持多选复制/剪切/删除 - 拖拽移动:拖节点到另一节点上即可成为其子节点(禁止拖入自身后代)
- 节点级剪贴板:复制/剪切带 tab 层级的纯文本,与外部文本编辑器互通;粘贴时自动识别 tab / 4 空格 / 2 空格 三种缩进
- 撤销/重做:统一栈,最大 100 步,结构与文本变更均可回溯
- 折叠记忆:折叠状态按文件路径存于本地,再次打开自动恢复
- 输入法友好:选中态承接 IME 合成,候选框跟随选中节点定位
- 暗色 / 亮色双主题切换
- 视口裁剪:大导图只渲染可见区域,平移缩放流畅
纯文本,UTF-8,Windows 换行(\r\n)。行首 tab 数 = 节点深度,行内容 = 节点文本(可含白名单 HTML 样式壳)。
中心主题
分支一
子节点 1
子节点 2
分支二
缩进规则:
- 行首 tab 数 = 节点深度;只允许有一个根节点(无缩进),其余行至少一个 tab 开头
- 「打开文件」时空格缩进视为非法,自动去除并告警;深度跳变过大(比上一层深超过 1 级)会自动钳制
- 「粘贴」时自动识别缩进风格:以首个缩进行为样本,tab 直接识别;空格则按各行行首空格数的公约数判定单位(2 空格或 4 空格 = 1 层)并折成 tab
HTML 样式壳:节点文本 = 外层标签壳(控制样式)+ 内层纯文本(不含任何 HTML)。内层文本入库前转义,编辑态所见即所得。允许的标签白名单:
| 标签 | 作用 |
|---|---|
b / i / u / s |
加粗 / 斜体 / 下划线 / 删除线 |
mark / code |
高亮 / 代码 |
ol / ul / li |
有序 / 无序 / 列表项(列表标记写在子节点上) |
span |
仅放行 color / background-color / font-size 三条 style,其余属性全部丢弃 |
非白名单标签整体转义为纯文本显示,杜绝脚本注入。折叠状态独立存于本地数据库,不写入 .ttmap。
给女儿演示AI操作思维导图,发现没有合适的工具,所以就让AI写了一个。
| 操作 | 快捷键 |
|---|---|
| 新建标签页 | Ctrl+T |
| 关闭当前标签页 | Ctrl+W |
| 打开文件 | Ctrl+O |
| 保存 | Ctrl+S |
| 搜索 | Ctrl+F |
| 撤销 / 重做 | Ctrl+Z / Ctrl+Y(编辑态由输入框处理) |
| 操作 | 快捷键 |
|---|---|
| 新增同级节点 | Enter |
| 新增下级节点 | Ctrl+Enter |
| 降级 / 升级 | Tab / Shift+Tab |
| 上移 / 下移(与兄弟交换) | Alt+↑ / Alt+↓ |
| 删除节点 | Delete / Backspace |
| 编辑当前节点 | F2 / 空格 / 双击 |
| 覆盖式输入 | 选中节点后直接输入字符 |
| 折叠 / 展开当前节点 | - / +,或 Ctrl+← / Ctrl+→ |
| 方向导航 | ↑ ↓ ← →(→ 折叠时先展开) |
| 全选可见节点 | Ctrl+A |
| 复制 / 剪切 / 粘贴 | Ctrl+C / Ctrl+X / Ctrl+V(粘贴为子节点) |
| 加粗 / 斜体 / 下划线 | Ctrl+B / Ctrl+I / Ctrl+U |
| 操作 | 快捷键 |
|---|---|
| 确认编辑 | Enter(失焦自动提交) |
| 确认并添加子节点 | Ctrl+Enter |
| 取消编辑 | Esc |
| 提交后降级 / 升级 | Tab / Shift+Tab |
| 操作 | 快捷键 |
|---|---|
| 下一个 / 上一个 | Enter / Shift+Enter |
| 关闭搜索框 | Esc |
| 操作 | 功能 |
|---|---|
| 滚轮 | 以光标位置为中心缩放(0.15~2.5 倍) |
| 右键 / 中键拖动 | 平移画布 |
| 左键空白处拖动 | 橡皮筋框选多选 |
| 左键单击空白 | 清空选择 |
| 单击节点 | 选中该节点 |
Ctrl+单击节点 |
增删多选成员 |
| 双击节点 | 进入编辑态 |
| 拖拽节点到另一节点 | 成为目标节点的子节点 |
| 点击折叠徽章(数字) | 折叠 / 展开下级节点 |
- 前端:Vue 3 + TypeScript + Vite + Pinia
- 桌面壳:Tauri 2(Rust 后端,负责文件读写 / 折叠状态 / 配置)
- 渲染:Canvas 2D 文本测量 + 自研 tidy 树布局
- 安全:HTML 子集白名单 sanitize
ttmap/
├── README.md
└── ttmap-app/ # Tauri 应用工程
├── src/ # 前端 Vue 源码
│ ├── components/ # MindMapCanvas / MapNode / Toolbar 等
│ ├── core/ # parser(解析/样式壳)/ layout(布局)/ bridge(Tauri 桥)
│ ├── stores/ # appStore(Pinia 状态层)
│ ├── App.vue
│ └── style.css
└── src-tauri/ # Rust 后端
├── src/lib.rs # 文件读写 / 折叠状态 / 配置 / 启动文件参数
├── icons/ # 程序图标(多尺寸 PNG + ICO)
├── tauri.conf.json
└── Cargo.toml
前置:Node.js 18+、Rust 工具链、Tauri 2 系统依赖(Windows 下需 WebView2 与 Visual Studio C++ 构建工具)。
cd ttmap-app
# 安装前端依赖
npm install
# 开发模式(热更新)
npm run tauri dev
# 类型检查 + 前端构建
npm run build
# 打包为 Windows 安装程序与绿色 exe
npm run tauri build构建产物位于 ttmap-app/src-tauri/target/release/:
ttmap-app.exe(绿色可执行文件)bundle/nsis/童童思维导图 - TTmap_<version>_x64-setup.exe(NSIS 安装包,安装时自动关联 .ttmap 文件,双击即可用本程序打开)
暗色圆角底 + 琥珀色「T」左旋 90° + 三条分支线与蓝 / 绿 / 红圆点,简约且点题「思维导图」。 图标由矢量绘制脚本统一生成全部尺寸(含 Windows 资源编译器所需的 DIB 格式 ICO),保证各尺寸颜色一致。
MIT
