赖勇浩(http://laiyonghao.com)
缘起
你想用思维导图来分析问题,然后,你就有两个问题了。——无名氏
许多朋友都听说过思维导图(又称脑图),它是用来理清思路的好办法。同时我也相信许多朋友在使用思维导图的过程中遇到了许多问题,比如:
- 搜索了一下,发现思维导图的编辑器都好几十 MB;
- 下载安装发现这些 java 写的程序启动巨慢,还占内存;
- 编辑了三五十个节点发现自己不停地要调整位置,还调不好看;
- 调好看了发现自己都忘了要分析的问题;
- 保存的文件非得用专门编辑器才能看和改,说是 xml 文本格式打开发现根本看不懂改不得;
- 把文件放到版本控制系统里,版本比对的时候一团乱像,理不清来龙去脉;
- 号称跨平台,手机一般看不了,更别提编辑了。
是的,我也遇到了这些问题,然后我就开始去找一些更轻量级的编辑器,希望能够方便地使用思维导图,因为我觉得这东西不应该这么复杂,之前找到的编辑器都没有抓住思维导图的本质。
我找到的最有启发的东西是一个网站:Text 2 Mind Map(
http://www.text2mindmap.com/),它提出了使用基于缩进的文本来描述思维导图,然后再由软件渲染出来!是的,就是像 Python 那样的缩进语法,多一层缩进就是上一层的子节点。是的,我们再也不需要去调整各个节点的位置了,软件会自动帮我们计算最好看的渲染方案!下面来一个例子,文本是这样的:
Months of the year
Spring
March
April
May
Summer
June
July
August
Autumn
September
October
November
Winter
December
January
February
渲染出来的图片是这样的:
漂亮吧?是的!太漂亮了。但是我在使用的过程中发现如果有一两百个节点,这个 Flash 开发的应用程序极易崩溃!除此之前我也没有办法让它跟其它软件或网络应用结合起来。所以我开始以此为出发点,去想一些自己的方案。最后结合我自己曾用过一下 graphviz 和 python 的特点,我决定自己写一个脚本来做基于缩进的思维导图的文本与 graphviz 的 dot 语言之间的转换。这就是 ibmm2gv,考虑到日后可能会有 ibmm2any 的可能,我就把它放进了一个叫 ibmm(indentation-based mind map)的项目里,并托管到 google code(
http://code.google.com/p/ibmm/)。
安装
安装 ibmm2gv 非常简单,因为它已经托管到了 pypi,只要你安装了 python 和 pip,然后在命令行执行:
pip install -U ibmm2gv
就安装成功了。ibmm2gv 是遵循 unix 哲学的小应用,默认情况下它从标准输入里读取输入,然后把输出放到标准输出,你可以使用管道把它跟 graphviz 的生成程序 neato(也可以是别的渲染引擎,比如 dot)连接起来。下面举个例子,把上文中的文本保存到一个文件中,取名为 season.ibmm,然后在其目录执行:
cat season.ibmm | ibmm2gv | neato -Tpng -oseason.png
你可以看到生成的 season.png 图片了。见下图:
怎么样?跟 Text 2 Mind Map 生成的图片也差不太多吧?好嘛好嘛,我知道这是黑白的风格好像有点逊色,但你要理解啊,这是我用两天业余时间做的 0.0.1 版本,接下来我研究一下 graphviz,生成漂亮的真彩图片不是问题。
重点是有了 ibmm2gv,以后只要打开记事本就可以写脑图了,手机平板都不成问题啊!保存到 svn/hg/git 都可以,版本一比对,一目了然!哪怕有时候 SSH 连接到服务器上,虽然看不到图,但看到树状的纯文本基本上也可以脑补完全了!
关于中文
graphviz 是支持中文的,需要指定 -Nfontname 参数,不然默认情况下找不到中文字体来渲染就乱码了,在 windows 上可以试一下 -Nfontname="Microsoft YaHei",这表示使用微软雅黑,在 linux 下可以使用 -Nfontname="WenQuanYi Micro Hei Mono",这表示使用文泉驿微米黑。在 linux 下可以用 fc-list 来看一下安装了哪些字体,如果没有文泉驿微米黑可以使用命令 aptitude install ttf-wqy-microhei 安装。下面是一个例子:
一年 12 个月
春
三月
四月
五月
夏
六月
七月
八月
秋
九月
十月
十一月
冬
十二月
一月
二月
把上述文本保存为 season-zh.ibmm,执行命令:
ibmm2gv --infile=season-zh.ibmm | neato -Tpng -oseason-zh.png -Nfontname="WenQuanYi Micro Hei Mono"
就可以看到使用文泉驿微米黑字体在 linux 下渲染出来的图片了:
准实时看到最后效果
很多急性子,希望随时能够看到最后的效果,这里有一个还算过得去的方案,需要你使用 windows 7 系统。
- 打开一个命令行界面,在你保存 ibmm 文件的路径下执行:python -m SimpleHTTPServer ,这样你就开了一个本地的 HTTP 服务器。
- 然后把你的文本编辑器打开,按下 windows 键和左方向键把它放在左半屏,编辑、保存,
- 然后在一个新的命令行窗口中执行生成脑图的命令;
- 然后再打开一个浏览器,按下 windows 键和右方向键把它放在右半屏,在地址栏输入 http://127.0.0.1:8000,就可以看到生成的脑图的文件名,点开即可查看。在后续的编辑过程中,只需要保存、生成、在浏览器按 F5 刷新即可。
后续开发
- 首要的肯定是更漂亮的效果。
- 其次是类似 restview 的方便的预览方案。
- 然后是各种 wiki 的相应的插件的开发,敬请期待吧!