Xmind 使用实践

Xmind 使用实践

[TOC]

本文为思维导图软件 Xmind 的使用实践总结, 包括选择其的理由, 一些使用技巧, 最后是规则化导出为 Markdown 文件的经验介绍.

Xmind 简介

Xmind 是用来制作思维导图(脑图 The Mind Map)的软件. 关于思维导图, 这里不做介绍.

思维导图软件非常多, 在搜索引擎上搜索思维导图, 出现的是各式各样的思维导图软件/网页应用. 如果在加上支持思维导图的一些画图软件, 可以说真的是多如牛毛一般.

在对比使用过 MindManager, Freemind, ProcessOn, 百度脑图等多款商业或开源的思维导图软件/应用后, 我选择使用 Xmind, 因为其有如下特点:

  • 简洁美观

    不管是界面还是可插入图标, 结构风格, 智能配色方案, 最近新出的手绘风格等都十分简洁大方更具商务风, 包括 Xmind 官网本身的设计. 同时, 随意的放大与缩小, 操作丝滑, 且效果不失真.

  • 操作简单

    把思维导图的基础操作绑定到了非常触碰到的快捷键上, 帮助写手不因为操作而浪费一闪而过的思路.

  • 性能稳定

    我在 Windows 以及 Ubuntu 下重度使用 Xmind 只出现过一次卡死(将图片错误地复制到文本框中), 其他明显 bug 的现象暂时没有遇到, 整体来看是比较稳定的. 这是商业软件相对于开源软件的强项, 即便如此从 2012 年开始使用至今能保持性能稳定的前提下还能增加这么多功能与体验实属不易.

  • 跨平台

    支持 Windows, Linux, iOS/iPadOS, Android. 可惜的是没有 Web 版, 可以使用在线的其他思维导图服务生成 .xmind 格式, 例如 ProcessOn 在线服务.

  • 导出导入功能齐全

    支持 MindManager, FreeMind, Lighten, MindNote, Markdown, OPML, TextBundle, Word 的导入. 支持 PNG, SVG, PDF, Markdown, Word, Excel, OPML, TextBundle 的导出.

  • 特色功能

    ZEN 模式, 全屏界面下使用快捷键操作, 帮你捕捉瞬时的想法.

    演示模式, 用思维导图来代替 PPT 进行资料展示.

  • 内置资源优秀

    例如, 一些常用的图标与贴纸非常实用好看. 鱼骨图, 矩阵图, 树形图等基础的思维导图结构都有不错的官方模板.

一些缺点:

  • 当文件变大/条目较多时, 打开保存以及拖拽操作会有些卡顿.
  • 没有官方的模板等分享的论坛, 希望做出极富可视化特色(千奇百怪)的思维导图, Xmind 可能不是最优. 官方的一些模板, 参考网站 .
  • 贵, 并且使订阅制的. 虽然免费版能满足基础要求, 全面一些的需求还是要花不少银子.

本文的 Xmind 是 20200508 的版本.

Xmind 解读

这里不会去说创建主题, 主题间的链接, 快捷键的使用与定制等基础操作, 这些在使用中很快就能探索到.

.xmind 文件

.xmind 文件其实就是一个压缩包. 包含内容如下:

1
2
3
4
5
6
resources/ # 插入的附件等资源
Thumbnails/ # 缩略图, 用来快速浏览
content.json # 文件实际内容
content.xml # 没看出来作用
manifest.json # 把各个文件串起来, 例如资源在哪里
metadata.json # 元数据, 例如版本号

可以看到如果码力足够的化, 是能够把 .xmind 里的内容直接解析出来的.

链接

思维导图的强项在于层次性很强, 并且可以通过折叠把焦点聚集到一处, 实现写作时的专注与演示时的简洁. 缺点是不如文本那样可以平铺开来, 找到章节间的联系(目录信息, 搜索等), 同时可以很方便地插入图片, 链接, 超链接跳转等功能. 我觉得可以凝聚成 2 个字: 链接. 包括:

  • 资源链接(附件)
  • 超链接
  • 层次性信息链接
  • 信息搜索链接

这些在 Xmind 中都有解决方案:

资源链接

可以通过 插入 选项卡插入主流资源. 例如: 图片是在 Xmind 界面中产生缩略图, 并被保存到 .xmind 文件里的 resource/ 文件夹下. 音频文件可以通过语音备注插入录音信息. 所有的文件都可以通过附件的形式插入到主题中, 并被保存到 .xmind 文件里的 resource/ 文件夹下.

超链接

  • 本地文件: 可以只支持绝对路径, 而不支持相对路径, 如果 .xmind 文件与链接的文件一起移动就找不到了.
  • 网页
  • 主题: 可以让一个主题链接到文件中任何一个主题.

层次性信息的链接

如果我对 2 本书进行了笔记记录, 我希望它们能够在一个文件中, 并且独立开来又能够相互链接到. Xmind 提供了两种方式:

  • 画布. 类似于 excel 的 sheet, 然后通过主题间的链接, 从一个画布里的某个主题链接到另一个画布. 缺点是文本变大, 极端情况下 Xmind 在打开/搜索等操作下会变得卡顿.
  • 另写一个 .xmind 文件, 然后通过插入附件的形式实现链接. 虽然解决了卡顿的问题, 但只应用于其中一个文件不常改动的场景.

信息搜索链接

ctrl+F 搜索一切文本信息. 不仅包括主题与次主题里的内容, 也可以搜索到一个主题的附录信息–笔记. 笔记一般不出现在界面中不会造成混乱, 并且具有一定的格式编辑性(加粗, 列条等) 我认为这是个非常好的设计, 一方面保持了思维导图的信息展示框架性的特点, 又增加了详细信息添加的自由度. 当下笔记功能让我想吐槽的一点是, 软件会画蛇添足地在行间自行增加空行, 如果希望导出笔记部分, 格式可能会乱掉.

需要查看笔记时仅需要点击右侧的三条线即可.

大纲界面

可以一键转换到大纲界面, 然后同下三角图标来操作展开与折叠, 实现整体目录信息的查看.

标签

Xmind 提供了对一个主题打标签的功能, 但是目前不支持对标签进行搜索以及管理的功能(应该在开发吧).

Xmind 与 markdown 写作的配合

Xmind 在学习笔记尤其是书本的学习笔记时, 非常合适, 但我希望把学习笔记通过博客的形式分享记录下来, 这个时候需要把 Xmind 导出为 markdown 文件. 在导出的 .md 文件基础上编辑发布. 下面是一些这方面的总结.

  • 导出不会改变任何文本格式, 包括转义

    例如 markdown 的语法, 插入图片 ![]() 可以直接写在 Xmind 的主题里, 生成的 .md 文件不会做任何修改.

  • 要点与正文

    由于思维导图天然的要点形式, 其导出的 markdown 内容都是要点, 即 n 个 tab 后加 - 后一个空格加主题内容. 这就形成了无限层次的要点. 至于每个要点的正文, 通过主题的笔记形式添加进去. 如下图的结构导出的结果为

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 中心主题

## 分支主题 1

### 子主题 1

### 子主题 2

- 子主题 1.1.1

- 子主题 1.1.1.1

- 子主题 1.1.1.1.1

正文1

## 分支主题 2

## 分支主题 3
  • 数学公式

    能够支持 Latex 数学公式, 必须点赞(虽然是收费功能)! 可以通过插入选项中数学公式对一个主题插入 Latex 公式, 生成的公式会自动生成图片显示在界面上, 同时保存为图片在 \resources 文件夹下. 一个例子如下:

  • 仅文字能够被导出到 markdown 中

    上面提到的链接(资源, 附件, 主题间链接), 数学公式等都无法被到 markdown 中, 因此需要我们自己后期添加或者用下面的方式在 Xmind 中添加公式代码, 后面用脚本加工. 例如上面的例子在主题中写入 Latex 代码:

这么做产生的 \t \t - $$FORMULA 会导致后面 markdown 格式错乱, 因此我写了一个 AWK 的脚本删除前面的 tab 以及 - , 同时考虑到博客渲染引擎 Hexo 可能对数学公式支持不太好, 在公式前面的 $$ 加上 { % raw % } , 以及在后面的 $$ 加上 { % endraw % } 限制符. AWK 代码如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# 开始前检查输入文件是否有关于 $$ 的格式错误
BEGIN{file_name = ARGV[1]; system("./check_error.sh " file_name);print "<<-------->>"}

# TOC 中加入第三级目录
/^- [0-9]\.[0-9]\.[0-9] / {insert = ("####" substr($0,2));$0 = insert "\n" $0 }

# $$ 单独行后加 {% endraw %}
/^\$\$$/ { $0 = "$$ {% endraw %}"}

# $$并且带-的行在 $$ 前加入 {% raw %}
/-/ && /\$\$/ { sub(/\$\$/," {% raw %} $$") }

# 带 $ 并且不带 $$ 行前后加入 {% raw %} {% endraw %}
/\$/ && ! /\$\$/ {
$0 = add_raw($0)
}

# 带 $ 并且带 $$ 行前后加入 {% raw %} {% endraw %}
/[^\$]\$[^\$]/ && /\$\$/ {
p0 = $0
sub(/\$\$/, "", p0)
p1 = add_raw(p0)
$0 = p1 "$$"
}

# 消除代码块前的 - 导致格式混乱的问题
/-/ && /```/ {
split($0,a,"```")
$0 = "```" a[2]
}

{print}

function add_raw(ds){
num = split(ds,arr,"$")
for(i = 1; i < num; ++i)
{
if(i%2 == 0)
{
arr[i] = " {% raw %} $ " arr[i] " $ {% endraw %} "
}
}
ds = ""
for(i = 1; i <= num; ++i)
{
ds = ds arr[i]
}
return ds
}

综上所述, 使用 Xmind 导出为 markdown 规则很明晰, 对于不复杂的结构以及没有数学公式, 索引的导出还是很友好的. 如果需求更复杂多样一些的化, 可能要结合导出规则 + markdown 语法 + markdown 渲染规则进行一定的文本加工, 这种加工可以使用简单的脚本语言, 例如 AWK 实现.

作者

cx

发布于

2022-04-08

更新于

2022-07-16

许可协议