Boostnote及对记笔记的思考

这篇文章就是在Boostnote 中写成的XD

来龙去脉

有一阵子,我沉迷于“笔记软件狩猎”中——就是不停寻找各种各样的笔记软件,再一个个试用,企图从中选出一个最强大的。回想起来,我尝试过有道云笔记、印象笔记、Quiver、Boostnote、OneNote、Yu Writer、Leanote(在本地搭建),等等。大部分都是浅尝辄止,例如OneNote,当我发现它不支持代码块语法高亮时,就放弃了它。目前仍然在使用的是Boostnote,并且也是最令我满意的。

走马观花

Boostnote自诩为“for developer”的笔记软件,除了书写Markdown以及实时预览之外,还支持绘图(UML、流程图、时序图)、制表,甚至可以添加LaTeX公式。

GitHub上可以找到官方对Boostnote绘图能力的简单示例,但我用得极少。不管是画UML、流程图,还是时序图,方法都是“写代码”。画UML用的是PlantUML的语法(你甚至可以在首选项中找到PlantUML服务器的地址),画流程图用的是flowchart.js的语法。我自己很喜欢这类语绘的方式,只需要熟悉一下语法,画起来图来比鼠标拖拖拉拉不知道要高到哪里去了。说到时序图,我更喜欢用sdedit

制表只需要敲入竖线和横线即可。例如,下面的内容

1
2
3
|这|是|一|
|-|-|-|
|个|表|格|

在Boostnote中预览时的效果是如下这样的

制表在Emacs的org-mode中有更风骚的表现。比如,按下tab键可以让光标跳至下一个单元格,同时会自动调整每一列的宽度;甚至,还可以在单元格中使用公式。

既然可以嵌入LaTeX,那么下列的内容

1
$$ \LaTeX $$

就能够用来绘制酷炫版的LaTeX logo了,如下所示

$$ \LaTeX $$

只可惜这玩意儿不是inline的。

Markdown这门标记语言原本也支持代码块,但稍微现代的编辑器都应当至少支持语法高亮才行。在Boostnote中即便不进行预览,代码块中的代码也是彩色的。

Boostnote自动保存笔记内容,这点上每个人的口味可能还是不太一样的。

槽点

尽管可以将剪贴板中的图片粘贴到Boostnote的笔记中,却不能将图片复制到剪贴板中。唯一的办法,就是在粘贴了图片后,按照笔记中的文件路径,在Finder中找到这个文件,然后再复制。

不像Yu Writer和Typora,Boostnote既不支持目录也不支持大纲模式。如果用来写篇幅很长的文章,并且需要频繁在相距比较远的章节之间切换的话,会写得比较辛苦。但也可以认为,Markdown,或者说Boostnote这样的笔记软件,本来也不适合写作大型文档。遇到这种事情,还是应当出动字处理软件(比如Word)或者TeX。

Boostnote没有将笔记的内容以朴素的Markdown形式保存为一个.md文件,而是存储成后缀名为.cson的文件格式。这意味着,即便哪一天有一款完美的Markdown编辑器出现了,也无法在其中查看和编辑这些Boostnote生成的文档。

一些胡言乱语

  • 记笔记的目的是什么?
  • 我对笔记软件的要求是什么?
  • Boostnote是最合适的吗?它又适合做什么呢?

我不是从入手了Mac之后才开始记笔记的,在此之前,我用Emacs的org-mode来记笔记,但也许称其为FAQ更恰当。使用org-mode,写作方式、浏览方式,以及载体都是一致的——用org-mode的语法来写作,同时写下的也就是所看到的(org-mode没有预览一说),最后,存储的也是纯粹的、敲入的文本。但用org-mode来记笔记也有自己的缺陷:

  • 在Emacs中浏览的体验不是非常好
  • 不方便使用行内的代码块
  • 其它编辑器对.org格式的支持不好
  • 不方便粘贴图片

因此,才打算构筑新的笔记系统。但新的笔记系统应当不仅仅可以解决org-mode遇到的问题,而是应该贴合我的核心需求才行。我自己曾经总结过,笔记软件应该满足如下的要求:

  • 支持Markdown,它是一门我所熟悉的、轻量级的标记语言,也被众多的软件支持
  • 支持编程语言的语法高亮,毕竟是软件开发方面的笔记,总会涉及到代码的
  • 以.md文件的形式存储。这个一会儿再聊聊
  • 支持树形的文件层级结构,因为我可能会给笔记划分比较多的层级,但这个也值得一会儿聊聊
  • 支持Emacs的keymap,这是我所熟悉的操作方式,减少手离开键盘的次数

看下来更像是在物色一款好用的Markdown文件编辑器。但一款优秀的Markdown文件编辑器就会是一款优秀的笔记软件吗?我看未必。

实际上,对代码的语法高亮的要求,暴露了一个关键因素,就是:即便我写入的是Markdown代码,也希望能够以渲染后的效果展示出来。所以,为什么不直接使用富文本来书写笔记内容。如果是富文本的编辑器,那么一般便不会是以朴素的.md文件的格式来存储的了,但这并没有什么太值得在意的,毕竟谁也不会闲着没事就将笔记内容在各个软件间迁移着玩。

如果是一些可以公开的笔记,那么直接记录到博客中也不失为一个好办法——博客可以被搜索引擎索引,之后如果想要查找记录过的内容的话,也可以借助于搜索引擎强大的搜索能力来实现。不过,现阶段,我更喜欢这些笔记是私密的。

我的笔记也几乎不会与他人分享,因此不管是书写格式还是存储格式,都只需要我自己用着开心就足够了。大多数情况下,笔记的用途其实是代码片段,在需要的时候能够复制出来略作修改,用到其它地方——例如粘贴到shell中运行,解决一些临时的问题。如果不是因为我喜欢记下最终结果的来龙去脉的话,Boostnote的代码片段功能也许才是最适合我的选择。另外,由于大部分的代码都非常地短,即便没有语法高亮浏览器来也不是大问题,所以语法高亮的需要也就不那么迫切了。

现在看来,Boostnote并不是最合适的(打脸了)。Evernote和Leanote是我用过的笔记软件中比较强有力的两个竞争者。由于Leanote比Evernote支持更多的目录层级,并且还可以选择创建Markdown笔记(而不仅仅是富文本笔记),所以我大概会选择用Leanote来作为接下来的笔记软件的主力吧。

后记

用Typora来写,用ElasticSearch来索引笔记,好像也不错?!