开篇
买了 MacBook Pro 之后的一段时间里,为了打造适合自己的知识管理体系,折腾起了笔记类软件(题外话,我还挺喜欢尝试新软件的,尤其在接触 macOS 后发现许多软件都长得很漂亮)。其实在入手 Mac 之前,我已经试用过不少笔记类软件和服务了,包括 Evernote(还有印象笔记)、有道云笔记、为知笔记,等等。再后来,改用 Emacs 的 org-mode 来写笔记——主要是将一些常常搜索的内容或经验记录在了多个.org 文件中,算是一份自己的 FAQ。后来想看看在 macOS 的世界中有没有更好的工具,同时渐渐觉得 Markdown 是一个更好的笔记内容载体,便尝试了一些知名的笔记类软件暨 Markdown 编辑器。
大致上尝试了下列这些:
Emacs
Boostnote
Quiver
Typora
Visual Studio Code
Yu Writer
本文并不是一篇完整的、专业的软件评测报告,只是我兴趣使然的对各个软件的吐槽和赞美,各位权当打发时间吧。下面我按顺序说一下上面提及的各款软件。
Emacs
Emacs 并不仅仅是一款 Markdown 编辑器,我用得最多的是用它来做计划(之前还用来写 Node.js 代码,不过现在交给 VSCode 了)。用 Emacs 来写 Markdown,坏处是没有 live preview 的功能。在 Emacs 中打开了一个.md 文件,只会原原本本地显示着井号、星号,三个反引号等 Markdown 语法的关键字——并且还是白底黑字的模样,而不带有丝毫不同的样式。为了让它们好看点,你还需要安装一个叫做 markdown-mode 的 Emacs 扩展。但几遍安装了 markdown-mode,也无法实时预览。markdown-mode 的菜单栏中有一个叫做“Preview”的功能,它依赖一个名为 markdown 的命令行工具(用 brew install markdown 可以安装)。当一切安装完毕点击“Preview”菜单项时,才发现是在网页浏览器中查看的方式——虽然有 preview 了,但并不 live。
Emacs 在写 Markdown 方面也并非一无是处。对程序员而言,在一篇 Markdown 写就的文章中插入代码是再正常不过的事情了。在 Emacs 中将光标定位到 Markdown 语法的代码块内,按下 control 和 c 的组合键,再敲一下单引号键,Emacs 便会另起一个相应模式的 buffer,并将代码块中的内容复制到新 buffer 中供继续编辑。如下图所示
在上面的 GIF 中,代码块以 GitHub Flavored Markdown 的语法在开头的三个反引号后附上了模式的名字,即 lisp,Emacs 便会打开 lisp-mode 的 buffer。在这个 buffer 中可以继续使用 Emacs 的完整功能编辑对代码,包括语法高亮、自动补全,等等——如果启动了 SLIME,甚至可以运行里面的 Common Lisp 代码。
Emacs 和 VSCode 用于在编写代码的同时写写项目的 README.md 文件应当是绰绰有余的了。
Boostnote
Boostnote 自诩为“程序员的笔记本”,它并不是我在 Emacs 之外寻找的第一款笔记软件,在它之前,我还尝试了 Notion、Quiver 来着。上手后发现,Boostnote 简直就是 Quiver 的开源免费版本,相当的喜爱。
Boostnote 当然让我格外喜欢的有几点:首先,Boostnote 可以实时预览键入的 Markdown 源文档。会有一列跟编辑区域差不多宽的区域被用来展示 Markdown 渲染后的效果。(刚刚发现,原来这个区域的宽度是可以拖动调节的)
其次,它不仅支持 Markdown、带语法高亮的代码块,甚至还支持表格和流程图的绘制!当然我以为,用竖线和连字符绘制表格的功能仅在 Emacs 的 org-mode 中存在(孤陋寡闻了汗颜),刚开始用 Boostnote 制作表格的时候可是相当兴奋。而 text-based 的绘制流程图的方式也是让我大开眼界(后来才知道原来有 flowchart.js 这样的工具)——尽管后来我渐渐发现,绘制流程图其实挺少用。
然后 Boostnote 具备在多份笔记中搜索的功能,这对于一款笔记软件而言倒是真的非常重要,因为有时候只能想到一些只言片语,而并不能确定所要查阅的内容究竟在哪一份笔记中。
但 Boostnote 也有一些缺点。首先,Boostnote 是用自有的文件格式(而不是纯文本的.md 文件)来存储输入的内容的——打开~/Boostnote/notes/ 可以看到这些后缀为.cson 的文件。这样一来,假设我日后发现了一款更优秀的 Markdown 编辑器,那就不能无痛迁移了,还得先从 Boostnote 中将这些笔记逐一导出成.md 文件才行。
其次,Boostnote 只支持三层的组织结构——最外层是 storage,然后是 folder,最后就是笔记本身。当初有道云笔记特别让我喜欢的,就是它支持非常多层级的目录结构。尽管目录不是越多越好,但有这种灵活性总是更好的。否则,笔记的使用者就只能在命名和标签上下功夫了
最后一点,就是 Boostnote 在我的系统上非常容易崩溃。有时候一翻起盖子,看到的就是 Boostnote 崩溃的提示。
不过 Boostnote 支持往其中粘贴图片,当我需要快速记录一些图文内容时,我还是很喜欢用它的。
Yu Writer
某一天偶然遇到了 Yu Writer,它官网上的截图看着很吸引人,于是我便试用了一下。第一印象是,Yu Writer is awesome!首先它很人性化。它的预览区域是一个 minimap——就是 Sublime Text 最右侧的那一列。在做到实时预览的时候,也不会占用太多的横向空间。其次,它支持大纲视图
即上图左侧的目录。恰逢当时我在用 Boostnote 写一篇比较长的设计文档,深刻地体验到了一个大纲视图的重要意义——对在长文档内的多个标题间跳转非常有帮助。再次,Yu Writer 还准备了工具栏,方便不懂得 Markdown 语法的用户;支持标签页,便于在多个文档间切换;甚至可以把一个 Markdown 文档作为幻灯片来播放。
但 Yu Writer 也有它自己的劣势。第一,在 Yu Writer 内,原本在 macOS 系统中全局可用的 Emacs 风格快捷键——即 control+ b 往左移动光标、control+ f 往右移动光标——居然不生效!这些快捷键对我个人还是非常重要的。
第二,在 Yu Writer 中,不能直接插入磁盘上的图片文件的绝对地址,既没有在预览区域显示出来,也没有在文档列表显示成功。
据说 Yu Writer 的作者的主业是厨师,感觉好强
Typora
Typora is best。不同于前面提到的几款 Markdown 编辑器,Typora 是“所见即所得”的编辑器。你敲入两个井号,加一个空格,再敲入你的标题内容,最后回车,那么标题内容就会被渲染为二级标题的形式,如下图所示
这么一来,屏幕上的空间基本都可以被用来写作,不需要担心被预览用的列给占据了。
然后,Typora 没有自定义它的存储结构,它直接打开磁盘上的.md 文件进行编辑,这些 Markdown 源文件可以随心所欲地放在任何喜欢的目录下,只要能打开就行。再加上它文件树视图,就实现了不受限制的笔记组织方式了,如下图
不过一个可以想到的缺点,就是 Typora 不支持在所有的 Markdown 文件上搜索关键字——毕竟它也不知道要去哪个目录下寻找这些待搜索的源文件。
尽管 Typora 外观很简洁,但 Boostnote 有的功能它一个也没有落下,就像它的官网所说的那样
现在我的博客的文章基本都是用 Typora 来写的,冥冥中感受到了一股乐趣。但 Typora 毕竟没有搜索功能,所以我又开始摸索额外的搜索笔记的方式了(比如把记录在.org 文件中的 FAQ 导入到 ElasticSearch 中再借助全文搜索的力量来找到自己要的内容)。
后记
没有最好的,只有最适合的,祝各位都能找到最适合自己的 Markdown 编辑器。