多年养成的习惯,我喜欢用 Emacs Org Mode 来记笔记,并且建成一个 html 工程,当笔记写到一定程度的时候,我就发布成网页,这样可以直接在本地用浏览器打开笔记转成的 html 文件来查看内容。这样还可以自定义网页的样式、用 JS 控制显示方式等,比直接在 Emacs 里阅读的体验更好。

严格地说来,我是把 Org Mode 当成一个 Wiki 在用,我并不是把笔记一股脑地放在一个 org 文件里,而是分成不同的目录,存放不同的笔记内容。这样,经过七八年的积累,都差不多有 300 个 org 文件了,并且每个 org 文件还不短。很难想象,如果把这些内容全塞在一个 org 文件里,会是怎样一个结果?这些 org 文件,还有相互链接跳转、锚链接等,其实就是构成了一个完整的 Wiki 笔记库,只不过这个 Wiki 是本地的、使用 Emacs 作为发布引擎。

也许很多人会问,你为什么不使用 Evernote、为知笔记这些现有的笔记工具,而喜欢使用 Emacs 呢?这些工具的笔记收集功能已经很优秀了,并且还自带搜索功能,干嘛这么费力气自己折腾一套生态工具出来?

我承认,Evernote、为知笔记这些笔记工具,的确非常优秀,我也在平时使用它们收集资料、记一些事情。但是这些工具的强项也就在于收集资料了,可惜编辑功能太弱。所有的所见即所得编辑工具的致命缺点,就是编辑功能太弱了,这个特性在 Evernote 上体现得太明显了。无法快速选定内容,无法快速改写格式,最不能忍受的是,清除格式就把所有的格式都清除了。而 Emacs 的 Org Mode 使用的却是自己的文本标记语言,功能强大,并且最重要的是,写起来够快速,你永远用不着去找那些格式标记符号,只要拼命写就可以了。标记语言比起所见即所得的编辑工具来说,最大的优点就在于你熟悉了这一套语法后,你就能快速地记录你的想法,并且是带格式的!这样你的思维永远不会被工具的零散操作所打断。

Evernote 这些工具对于码农来说最大的问题还在于,在记录一些代码片断时,远远不够用。比如说,我在 Emacs 里可以针对 C++,Java或是任何一种语言指定代码发布成 html 页面时的风格及高亮显示内容,可是,在 Evernote 里怎么办?我实在是觉得有点不够用。所以,码农们还是老老实实用 Emacs 或是 Vim吧,这种纯文本的方式,才适合你记录各种技术笔记,方便转换为各种格式,还有,不会把你的代码格式搞乱。

Evernote 这类笔记,还有一个我最不喜欢的地方,即它们的信息组织方式。它们的信息组织方式更像是一个时间卷轴,不停地往后写东西,虽然网上也有技巧文章说把 Evernote 当成 Wiki 来用,可是这样使用的体验实在太差了。

你难道不想在本地拥有一个像维基百科那样的笔记工具么?维基这样的信息组织方式,在我看来,是最优秀的。我同样也试过了一些本地 Wiki 工具(例如其中最方便的一款便是 MoinMoin),但是无例外有几点问题:1. 本地备份与保存数据太麻烦;2. 环境搭建也太麻烦;3. 在网页上编辑,体验太差了,还不如 Evernote。

所以,最后我定格在了 Org Mode 上,让 Emacs 成为本地 Wiki 的编辑和发布工具,而让浏览器成为浏览最终结果的地方。

说完编辑工具,再来说说为什么要做这个本地搜索工具。

很多人都说,现在不是有很多这样的工具了么?像什么 Google 桌面搜索、百度本地搜索之类的,和我这个工具差不多用途。是的,没错,所有这些工具我都尝试过,我都有这样的不满意或是那样的不满意,我还是倾向于做一个自己的工具,专门服务于我自己的笔记。这些工具都有一些这样或那样的问题,比如说默认是指定整个电脑范围的搜索,展示页面太杂乱,还有最重要的一点,这些工具都太自以为是了,以为自己想到了用户的全部,竟然都不再更新了!难道不赚钱的生意就可以这样随便糊弄么?于是,我决定自己动手,让这个工具成为自己一生的事业伴侣,哈!

我喜欢 Google 网页的体验,所以我也做了一个网页版本的文件搜索出来,在尝试了 Python、Clojure 等语言后,我最后决定还是用 C++ 来写这个玩意了。现在这个工具还很粗糙,目前只能支持单个单词的关键字查询,不过暂时本地笔记搜索足够用了。以后我会逐步完善相应的搜索功能,比如说添加关键词的组合搜索,甚至于加入我自己擅长的图片搜索功能。或许将来我会逐步加一些我自己的特殊需求进去的,比如说直接对 org mode 格式进行解析、显示并生成预览等。

想试用的请猛戳这里,帮助和使用说明可以看这里,有任何疑问都可以给我留言。