我想每个知识工作者都会有自己的个人知识管理解决方案,而且也都在不断地进化和改善中,还记得最早的时候,我们是没有这些概念的,那时候,不管把信息记在哪儿,随手记下来就算了,用过之后也就忘了或者删掉了。慢慢地我们意识到一些信息可能是有用的,需要保留下来的,于是我们用各种方式进行保存,建一些文件夹,分一些目录,分门别类,把要保存的信息记录在 Word 文件中,放在这些目录里,或者是在邮箱里设置相应的目录存放邮箱里有用的邮件,或者是在微信收藏、QQ 收藏,个人云空间,QQ 文档、石墨、飞书文档等等,再后来,更有意识的人会使用商业解决方案,比如用 Evernote,One Note 等,最近热起来的 Roam research 和国内版 Roam Edit则代表了最新的双向关联的理念。

不管怎么说,都是可以解决一定范围的问题的,同时可能也会感觉到在某些方面有所不便,比如:隐私问题、自由灵活扩展问题、检索查询问题、归类整理问题、支持渐近演进问题、空间功能收费问题等,有些时候收藏就只停留在收藏的阶段,尘封之后,再很少发挥什么作用。

我个人的知识管理方案也是经历过了很多次的变化和演进,用过了很多的工具和方法,比如:各门户的博客、Evernote、印象笔记、蚂蚁笔记、有道云笔记、Jekyll+Github、Hexo+Github、Hugo + Gitee,等等

总得来说都是各有利弊,直到我最近看到了这个 Dendron,作者是个非常聪明的软件开发者,使用重命名代替了文件夹的管理,结合很多软件编程的先进思想,打造了这样一个开源产品,真正让我感觉是找到了一个理想的终极笔记解决方案,当然也只是对于现在的我来说比较理想,对于很多不是程序员的知识工作者来说,也许在某些方面会觉得也不那么理想吧,这也是我一直想说的一个观念,人的欣赏感觉是各不相同的,跟每个人的当前知识水平、技能水平都有直接的关系,就好像很多人(包括我自己目前也)不太容易欣赏交响乐的美妙一样,喜欢一些事物本身也是有一定的门槛的。就如同一些源代码在我们程序员眼里就有美丑区别和高下之分,而在大众眼里就都是一片片英文字母、如同天书一般难懂,更不用说欣赏了。

需求

首先我从需求角度说明一下:

自由保存

自由比较重要,经得起时间的考验,我们之所以更换过很多次解决方法,就是因为总是觉得不够满意,那么不管是什么解决方案,不能依赖于某个平台或者工具,当我们想要更换其他工具时,它必须是开放的。 所以有一些平台或者工具虽然使用起来比较好用,但如果进去容易出来难,那么我会劝你谨慎考虑,不要轻易使用这样的平台,否则有一天你的资料和信息,想要迁出到自己的电脑上时,将非常痛苦。

方便阅读、易于记忆

随时随地可以查看,同时查看的效果还要比较好。

易于记忆是针对人的大脑的,目前比较好的理论就是脑图理论,人更喜欢通过看脑图来留下印象。

方便编辑书写

编辑纯文本的工具,世界上还有比程序员的工具更好的吗?程序员每天的工作内容就是处理代码、书写文档等。

UTF-8 编码,这一点还是要提一下的, Windows 的系统使用 GBK 编码,每次跨平台时就会出来乱码,非常麻烦。还有就是换行符 LF 和 CT-LF 的区别,也很麻烦。 所以这个编译器必须能够很清晰、简易地处理这些问题。

支持各种格式编程、插图片、链接、公式、表格、流程图、UML图、脑图等

通常面对这样的需求,很多人会找来 N 多个工具集,当然也可以,如果能用一个工具完成这些功能,岂不是更好?VSCode 加上插件实际上就可以支持这所有功能。

易于整理

我们所收集和记录的信息内容,并不可能一开始就记录完美,很多时候可能需要后期不断地完善,那么就需要能够很方便地移动、拆分、合并、重命名、更换目录等操作。

支持查询、替换等

这个是软件能给我们带来的最大便利之一,很多平台对这个支持都非常有限,甚至没有这一功能,那么你收集的资料就如同深藏在大山里的宝藏,根本发挥不了应有的作用。

然而这也又是程序员所最擅长的一项了,程序员使用的工具,哪个没有搜索功能呢? 当前文件搜索/替换,全部文件搜索/替换,正则表达式搜索/替换等,只有你想不到……

版本管理

程序员管理纯文本信息的最佳方案,经过多年的进化,目前已经基本稳定成行业最佳标准,没有之一。

方便发布博客

每个优秀的程序员,都应该有自己的博客,那么就有一个需求,就是从自己日常的笔记中快速地发布到博客中。

兼具任务管理、日记等功能

既然平常的笔记都用这个工具了,那么每日的日记当然应该很方便地在这里记录,那每天做的事情、任务都应该可以在这里记录。

其他解决方案的主要劣势

Word + 文件夹

不方便整理、查询,阅读和编辑也有点麻烦,没有版本控制,格式不统一,调整格式也比较麻烦,各软件版本有兼容问题。

Evernote、有道云笔记、蚂蚁笔记、QQ文档、石墨文档等

依赖商业平台,有容量限制,有隐私顾虑,不能非常自由地保存,长期未支持 markdown,目前虽已支持,但可能还有兼容性问题,扩展性不强,不够灵活。 大部分有自己的快捷键方式,很少支持 vi 操作。

Hexo, Hugo 博客

私密文档的保存问题,调整目录不方便,只适合按时间发布到网站的博客工作模式,通常也就只支持一个网站。

Roam Research, Roam Edit 等

毕竟是别人的平台,隐私和自由依旧是个问题,商业平台的空间和功能收费也是个问题。

Obsidian

这个不错,推荐使用,如果更熟悉用 VSCode 的话,可以用 Dendron 插件。

Dendron

下面我直接说一下我的感受,关于 Dendron 最好的一些方面:

纯文本 markdown

见另一篇文章:《纯文本的威力》,不依赖任何特定的软件工具,可以选择自己最熟悉、最喜欢的文本编辑工具。 当然这里推荐使用:VSCode + Dendron插件 + Vim插件

Git 版本控制

最好的版本控制解决方案,已成为行业标准。可以方便地保存在各个 Git 服务平台上,如:Github, Gitee 等,同时借助各种 Git 工具,可以方便地管理文档的历史版本,可以方便地比较任意两个版本的异同等。参考:Git 的实际应用

目录结构灵活

这是 Dendron 创新的特点之一,用修改文件名来解决改目录的问题

code snippets

这是利用 VSCode 编辑器的特点之一,可以快捷编辑,写过代码用过 snippets 的朋友都知道。

Schema

支持模板大纲,更清晰地形成自己知识结构的模式等,可发挥的空间很大。

VSCode 生态

VSCode 已成为现代编程的最佳工具,有丰富的功能插件和解决方案,对纯文本处理有最强的支持,对 markdown 也可以通过插件做各式各样的支持。

支持 vi 快捷键及各种快捷键

这是个人的喜好,但建议你也学会,参考网上:编辑器之神与神的编辑器之争

发布静态网站

可支持各子目录单独发布到静态网站,需要一点学习门槛。

总结

上面举例的各种解决方案其实是几种解决问题的思维模式不同所产生的解决方案不同,Dendron 是典型的开源社区编程思维的解决方案,虽然初看起来有一点学习曲线,但从根本上是给了使用者最大的自由发挥空间,同时又提供了最强大和最彻底的工具生态支持。 通常这类的解决方案都是从最底层、最核心的用户需求引出了最纯粹的解决思路,至于人性化界面、操作等,可以在这之后不断发展出来,就如同 Git 这个工具的思想一样,最核心的功能和设计是科学合理的,那么最初是用命令行的模式操作的,后面可以不断在这些基础上,衍生出各式各样的图形化操作界面,以及象 Lazygit 这样的快捷操作方式等。

在编程的世界,很多新人会感觉非常迷茫,面对海量的技术知识,不知道该学什么,学哪些重点,在这些方面我个人的自觉经历还是有一些心得和体会的,就象今天介绍的这个 Dendron 的笔记技术,了解并熟练使用它,可能需要一些前置条件,如何达到这样的境界呢?非常建议每个人都能找到自己的导师,帮你快速地入门提升,身边找不到合适的导师时,可以加入“世风十三学堂”(知识星球/微信公众号),我来远程帮助你少走弯路少掉坑,进入更广阔、更专业的正念编程世界。

扩展阅读