用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插件: 代码有语法高亮
- Table Editor插件:这是今年中期发布的0.63版本才开始有的,挺好用。众多笔记软件在表格这个地方做得都不太好,但Zim做得不错,甚至单元格内文字带换行这类功能它都有(org-mode不支持这个)。另外很重要的一点是,Zim表格的wiki语法跟org-mode基本兼容,遇到批量输入不方便的时候,就调emacs来直接编辑好了。 还有,这个表格在拷贝/导出为Markdown或者RST的时候能够转换成对应的表格语法
- Journal插件: Zim算是树状笔记软件,但以前用树状笔记软件时强迫症患者会有个纠结点:一些零星的内容要在树上找地方放就很难。Zim的这个日记(Journal)插件,非常适合用来放零星的笔记,而重要的内容则会设定一个特定的wiki条目才存放,这样的话我可以将重要和不太重要的内容区分开来。
缺点
- 在使用场景上,Zim主要还是适合管理自己写的内容,整理形成自己的知识库。如果你有很多零星、琐碎的内容,那还是 Evernote合适; 如果你的大部分内容都是抓取整个网页文章(想尽量保留样式的话),可以用Scrapbook 或者 Evernote这类工具;同样,如果是在Windows上,有很多RTF/Word格式的内容,那么用Zim也不合适。
- Evernote我也同时在用,主要用来存放一些待整理的“知识”(多是网页片段)或者临时性的内容。它其它方面的功能都还不错,唯一的问题是数据在一个单一文件中,而我有多台电脑上切换的需求(我工作电脑有三台,分别用在个人兴趣、技术和办公协同三方面)。
- 在windows上,wiki条目名不支持中文(主要是文件名编码方式的问题)。
- 从网页拷贝内容进来时,不能自动转换格式,而Firefox上面的扩展zim capture和zim clip好像也都不好用——其实我觉得写个插件调用pandoc来转换的话,应该不会太难
一些/Tips
- 用Source View插件插入的代码如果它不支持这种语言的话,请改用Zim原始的三引号方式来嵌入,而不要采用"Default"语法,否则会导致Zim崩溃。这是目前已知的一个bug:Bug #1471285 - Code Block using Syntax Default crash Zim
- 前面说过,Windows上从浏览器拖图片到Zim附件栏时,始终得到的BMP格式的图片,不喜欢这种格式的,需要自己转换一下,或者改成直接拖到文件管理器里面;
- 如果你想让界面变成中文,需要设置环境变量LANG为zh_CN。对于采用windows portable版本的用户,可以在
ZimDesktopWikiPortable\App\AppInfo\Launcher\ZimDesktopWikiPortable.ini
这个文件里面设置。详细说明在这里: Set the language for the portable version. - 如果你对Zim里文字的显示风格不满意,可以修改
~/.config/vim/style.conf
(比如我就觉得默认的几级标题无法分清,于是从emacs tango theme里面偷了颜色配置过来),注意修改之前需要关闭 Zim,修改完之后再打开,具体配置说明可以参考这里: Config Files - Zim Wiki。 - Table of Contents 这个插件挺不错的,可以在右上角增加一个浮动小窗口,显示当前文章的各节标题(这可以顶替Emacs里面 anything-org-headlines 的能力)
用Zim替代org-mode?的更多相关文章
- 用lucene替代mysql读库的尝试
采用lucene对mysql中的表建索引,并替代全文检索操作. 备注:代码临时梳理很粗糙,后续修改. import java.io.File; import java.io.IOException; ...
- Notepad2替代系统自带的记事本
事情是这样的,平时我经常把一些文字复制到记事本中编辑好了再复制到目标位置,可以在系统自带的记事本中替换删除一些内容,记事本小巧,占用很少的资源,我很喜欢:但今天复制的内容中有很多数字和一些我不想要的内 ...
- 在Wcf中应用ProtoBuf替代默认的序列化器
Google的ProtoBuf序列化器性能的牛逼已经有目共睹了,可以把它应用到Socket通讯,队列,Wcf中,身为dotnet程序员一边期待着不久后Grpc对dotnet core的支持更期待着Wc ...
- Autoit中用PrintWindow替代ScreenCapture函数实现截图
想截取躲在后面的窗体或控件,找到了PrintWindow函数,幸运的是Autoit3也对此进行了封装以方便使用. 于是乎,将帮助文件里的_WinAPI_PrintWindow()实例改写了一下,以替代 ...
- Axel替代wget
Axel替代wget 2011年11月10日admin发表评论阅读评论 Linux下用的最多的下载工具莫过于wget和curl,这两个工具虽然堪称经典.但其单线程的速度越来越不能大软件的下载.于是 ...
- [原创]MvvmLight中用IDialogService替代DialogMessage的用法
在新版的MvvmLight中,DialogMessage被标注为已过时,需要用IDialogService来替代,IDialogService的具体用法如下: 先在主窗体中实现IDialogServi ...
- 【Java EE 学习 83 下】【SpringMVC】【使用注解替代已过时的API】【SpringMVC、Hibernate整合】
一.SpringMVC中注解的使用 1.为什么要使用注解 之前曾经提到过的三种控制器在spring3.0中都已经被明确标记为过时了,spring3.0推荐使用注解的方式替代三种控制器,实际上使用注解的 ...
- PHP基础知识之流程控制的替代语法
PHP 提供了一些流程控制的替代语法,包括 if,while,for,foreach 和 switch. 替代语法的基本形式是把左花括号({)换成冒号(:),把右花括号(})分别换成 endif;,e ...
- 用 string 进行插入、替代、查找输出下标等操作
string s; s = "; string::iterator it; it = s.begin();//让s指向第一个元素 cout << s; system(" ...
随机推荐
- pgsql 常用的命令
pgsql 常用的命令:1. 创建数据库create database name with owner username; 2. 创建用户create role with createdb ;crea ...
- 多重背包问题:悼念512汶川大地震遇难同胞——珍惜现在,感恩生活(HDU 2191)(二进制优化)
悼念512汶川大地震遇难同胞——珍惜现在,感恩生活 HDU 2191 一道裸的多重背包问题: #include<iostream> #include<algorithm> #i ...
- 【原创】TP-LINK +ASUS(Tomato) 双无线路由设置WDS
主路由: TP-LINK TL-WR2041N 连接Internet,LAN IP地址:192.168.1.1,启用DHCP, 无线配置如下: 开启WDS功能,wireless为副路由的SSID,BS ...
- (转)【ASP.NET Web API】Authentication with OWIN
概述 本文说明了如何使用 OWIN 来实现 ASP.NET Web API 的验证功能,以及在客户端与服务器的交互过程中,避免重复提交用户名和密码的机制. 客户端可以分为两类: JavaScript: ...
- SRS用列建模
基本规则: 五子棋是两个人之间进行的竞技活动,由于对黑方白方 规则不同,黑棋必须先行.五子棋专用盘为 15×15 , 五连子的方向为横.竖.斜. 禁手是对局中被判为负的行棋手段.白棋无禁手. 在棋盘上 ...
- JSP的那些事儿(2)---- DWR2.0 的配置和使用
JSP的那些事儿(2)----DWR2.0 的配置和使用 分类: Web开发 JAVA 2009-04-23 15:43 999人阅读 评论(0) 收藏 举报 jspdwrjavascriptserv ...
- windows下使用体验更好的控制台——ConsoleZ
转做前端开发以来,每天使用最频繁的工具就是控制台了,git提交代码要用,npm安装node包也要用,grunt task 也要用,可是系统自带的cmd太难用了, 那么问题就来了: "wind ...
- Gatling->次时代性能测试利器
Gatling作为一款开源免费的性能测试工具越来越受到广大程序员的欢迎.免费当然是好的,最缺钱的就是程序员了;开源更好啊,缺啥功能.想做定制化的可以自己动手,丰衣足食.其实我最喜欢的原因是其提供了简洁 ...
- C语言实现单链表-04版
前面的版本似乎没能让项目经理满意,他还希望这个链表有更多的功能: 我们接下来要解决几个比较简单的功能: Problem 1,更加友好的显示数据: 2,能够通过名字删除节点: Solution 首先我们 ...
- 文件上传小技巧/后端处理【以php示例】
引语:在上一篇文章中说到,在页面中可以用隐藏的方式让你的上传页面看起来漂亮.但是这对于性能来说,并没有什么卵用,那么在后台的处理中,难道就没有一些处理技巧么?所谓后台的技巧,应该要包括上传得快一点,上 ...