用Zim替代org-mode?

时间:2023-03-09 07:19:10
用Zim替代org-mode?

三年前我玩过Zim,当时还写了一篇《Zim - 普通人的Org-mode》,当时还说我还是会坚持使用emacs org-mode。但最近我又在考虑是不是回头用Zim来写博客文章、整理知识库。

org-mode的缺点

虽然我一直在用org-mode写东西,但还是觉得有些地方不太方便:

  • 多篇文章管理起来比较麻烦,尤其是还有附件的问题
  • 插入图片比较麻烦(虽然对于即使截屏和插入图片我已经在 org-download 上折腾得还凑合了)
  • 没有集中发布成web site的功能——我是想将笔记转成html托管到 bamanzi.github.io 或者 bamanzi.bitbucket.org 上

(补充:写完这篇博文后,我又在想,是不是我也可以参照Zim组织Notebook的方法来组织自己的org-mode文档?比如放弃单个文件的做法,采用多文件、多目录来存放,用 Deft 来查找,用 org2jekyll 来发布? 得等有时间的时候再来折腾吧——上次想的结合 org-mode + org-babel 来搞 presentation的东西还没折腾呢)

Zim的优点

首先,Zim也是基于纯文本:

  • 一个Zim Notebook是一个目录,每个节点(topic)一个纯文本文件,很易于在多台电脑间同步(我在用seafile),而且一般在不同电脑上同时写同一篇文章,很少会发生冲突(即使冲突了seafile也会发现,帮我另外生成一个副本,按文件名搜索一下就可以发现);
  • 虽然Zim存的是wiki纯文本,但编辑时可以所见即所得,却又可以用普通文本编辑器来编辑,这一点跟 org-mode 差不多;
  • 可以用pandoc这样的工具将某篇文章转换为其它格式(比如在博客园发博客时转换为markdown格式)——zim的wiki语法是基于dokuwiki的,而pandoc(1.13.1版本以上)支持dokuwiki
  • 可以放到hg/git仓库里面

但Zim还有一些其它的优点:

  • 屏幕截图很方便。Zim有屏幕截图插件,点两下就可以截图插入了(不过Windows上面这个插件有些问题,我改天单独再说); Windows上面还可以直接从剪贴板粘帖图片;
  • 支持附件,各个wiki条目的附件分开存放。evernote不支持附件。org-mode找位置存放比较头疼,附件不跟笔记放在一起的话,几乎就没法管理;
  • 可以从文件管理器、浏览器拖图片到Zim附件栏(不过好像只是Windows上面可以,我在Linux LXDE上面没试验成功,不知道GNOME上面怎样。不过有个小问题:Windows上从浏览器拖图片到附件栏时,始终得到的BMP格式的图片);要在文章里面使用图片的话,再从zim的附件栏拖到文章里面即可(对于org-mode我每次用 org-download 的时候都要考虑图片文件放在那里)
  • 可直接导出html和markdown,还可以选择一段文字拷贝为markdown/RST格式。这对于我在博客园上发博文带来了相当大的方便;
  • Source View插件: 代码有语法高亮

用Zim替代org-mode?

  • Table Editor插件:这是今年中期发布的0.63版本才开始有的,挺好用。众多笔记软件在表格这个地方做得都不太好,但Zim做得不错,甚至单元格内文字带换行这类功能它都有(org-mode不支持这个)。另外很重要的一点是,Zim表格的wiki语法跟org-mode基本兼容,遇到批量输入不方便的时候,就调emacs来直接编辑好了。 还有,这个表格在拷贝/导出为Markdown或者RST的时候能够转换成对应的表格语法

用Zim替代org-mode?

  • Journal插件: Zim算是树状笔记软件,但以前用树状笔记软件时强迫症患者会有个纠结点:一些零星的内容要在树上找地方放就很难。Zim的这个日记(Journal)插件,非常适合用来放零星的笔记,而重要的内容则会设定一个特定的wiki条目才存放,这样的话我可以将重要和不太重要的内容区分开来。

缺点

  • 在使用场景上,Zim主要还是适合管理自己写的内容,整理形成自己的知识库。如果你有很多零星、琐碎的内容,那还是 Evernote合适; 如果你的大部分内容都是抓取整个网页文章(想尽量保留样式的话),可以用Scrapbook 或者 Evernote这类工具;同样,如果是在Windows上,有很多RTF/Word格式的内容,那么用Zim也不合适。
    • Evernote我也同时在用,主要用来存放一些待整理的“知识”(多是网页片段)或者临时性的内容。它其它方面的功能都还不错,唯一的问题是数据在一个单一文件中,而我有多台电脑上切换的需求(我工作电脑有三台,分别用在个人兴趣、技术和办公协同三方面)。
  • 在windows上,wiki条目名不支持中文(主要是文件名编码方式的问题)。
  • 从网页拷贝内容进来时,不能自动转换格式,而Firefox上面的扩展zim capture和zim clip好像也都不好用——其实我觉得写个插件调用pandoc来转换的话,应该不会太难

一些/Tips

  1. 用Source View插件插入的代码如果它不支持这种语言的话,请改用Zim原始的三引号方式来嵌入,而不要采用"Default"语法,否则会导致Zim崩溃。这是目前已知的一个bug:Bug #1471285 - Code Block using Syntax Default crash Zim
  2. 前面说过,Windows上从浏览器拖图片到Zim附件栏时,始终得到的BMP格式的图片,不喜欢这种格式的,需要自己转换一下,或者改成直接拖到文件管理器里面;
  3. 如果你想让界面变成中文,需要设置环境变量LANG为zh_CN。对于采用windows portable版本的用户,可以在 ZimDesktopWikiPortable\App\AppInfo\Launcher\ZimDesktopWikiPortable.ini 这个文件里面设置。详细说明在这里: Set the language for the portable version.
  4. 如果你对Zim里文字的显示风格不满意,可以修改 ~/.config/vim/style.conf(比如我就觉得默认的几级标题无法分清,于是从emacs tango theme里面偷了颜色配置过来),注意修改之前需要关闭 Zim,修改完之后再打开,具体配置说明可以参考这里: Config Files - Zim Wiki
  5. Table of Contents 这个插件挺不错的,可以在右上角增加一个浮动小窗口,显示当前文章的各节标题(这可以顶替Emacs里面 anything-org-headlines 的能力)

用Zim替代org-mode?