



















Matrix 首页推荐
Matrix 是少数派的写作社区,我们主张分享真实的产品体验,有实用价值的经验与思考。我们会不定期挑选 Matrix 最优质的文章,展示来自用户的最真实的体验和观点。
文章代表作者个人观点,少数派仅对标题和排版略作修改。
目前我在用的笔记系统,用一句很简单的话概括就是:本地 markdown 文件 + Dropbox 网盘同步,同时用 Vscode 项目把整个笔记目录管理起来。
大概几年前,我正在 Evernote 、有道云笔记、OneNote 之间反复横跳。当时还没有 Notion,也没有 Roam Research,甚至 PKM(个人知识管理)都很少有人提及。
最后还是选择了本地 markdown 这种「看似不便」的方式,毕竟原生的 markdown有种种缺点(图片管理、没有 Metadata、不支持复杂排版),本地文件的方式摆脱不了树状文件夹的笔记结构……甚至在当时缺少非常顺手的编辑器。但这些年修修补补也一直用下来了,上面提到的种种缺点也都改善或规避,期间也尝试过 Notion、RoamResearch、Logseq,但这种 「基于本地 markdown」的笔记一直都是我的笔记系统基本盘。

这种方案的好处是:
当然 「本地 markdown 文件」这种方案也有一些不便:
#标题作为块引用的最小单元(例如[[笔记名字#标题名]]这样 ) ,但不能支持更细粒度的块了, 相比较 Logseq 和 RoamResearch 等等都支持的「行级别的块引用」;Ctrl+v的傻瓜方式贴图,和富文本编辑器相比,对图片的使用已经不那么麻烦了。我把图片存储在项目下的 image 文件夹,用 Dropbox 一起同步。好处是笔记无论搬到 Git 还是 Hexo 博客,这些都能很好的支持本地图片,也不担心图床失效的问题。关于云笔记服务的数据安全多说几句,大厂的笔记产品,虽然有靠谱的技术保证服务稳定性,但也有潜在的不便:

我的笔记系统有 6 个目录(如上图),分别存储不同的笔记:
▷ 关于 2.Project 和 6.Archive 的分类:是参考了 P.A.R.A 分类法5,但没有完全照搬,只采用了两个原则:
另外,P.A.R.A 的提出者还提到自己私人信息也会放入 Area,这样可以随时放心的分享 Resource,例如体检报告、就诊记录放在名为「健康」的 Area 中,而 Resource 中存放的是运动、健康的有趣文章或者推荐的训练方案。
对于「闪念笔记」,我是不放入这套笔记里的,我会在手机上用 Drafts 记录下来,闪念笔记要每天清空一次,有保留价值的会稍加整合放在 「① Inbox」文件夹下继续组装和完善,无保留价值的闪念笔记直接删除(像一些无价值的呓语和仅仅带有情绪抒发的碎碎念,是无继续写的价值的);用完的闪念笔记也可以不删而是归档,这样在 Drafts 的归档里还是可以保留时间序的碎片的。
上面提到的 ④ 和 ⑤ 都是一个独立的 Obsidian 库,为什么作为知识积累的永久笔记,不放在一个文件夹而是分开? 原因一是如果合并,子目录就会太多,不便管理;并且 ④ 和 ⑤ 中的笔记几乎没有互相引用,所以分为两个库( Obsidian 管理引用链接的范围是库,库外的文件无法引用,属于不同库的笔记是「引用隔离」的 )
关于临时笔记(Fleeting notes)、永久笔记(Permanent notes)的概念:参考了Luhmann 的笔记分类 。但我的笔记里没有「文献笔记(Literature notes6)」这一类, 对于文献的记录和总结,我习惯都放永久笔记。这个视个人分类习惯而定,有时候把类型分的太细致反而阻碍写作的积极性。
永久笔记并不「永久」:永久笔记也在一直被更新和完善,拆成小文件、合并成大文件、增加引用链接等等。这也正是 Andy Matuschak 在常青笔记中的描述:「常青笔记的编写和组织是为了随着时间的推移不断进化、贡献和积累」,卢曼提到他的卡片盒笔记是内生长(internal growth)7的。
关于永久笔记奇怪的命名:「Code Primer」 来自于我的编程启蒙书《C++ Primer》;「Scriptorium」意为缮写室,中世纪制作书籍的地方8。
上面提到了两个永久笔记目录,如下图,左边是专业知识的笔记,右边是兴趣爱好的笔记:

笔记结构和格式有一套守则:
每篇笔记的格式,遵循「原子笔记」:即一篇笔记说明白一件事情。

分类文件夹只有一级,不建立二级分类文件夹:如果某个文件夹下的笔记非常多,不得不建立二级分类的时候,我的选择是仍旧新建一级文件夹,例如 📂11.Programming-Language 文件夹下是编程语言的笔记,因为我一直都在用Java,所以Java相关笔记的积累也非常多了,这时并不在 📂11.Programming-Language 的下层再建立子文件夹,而是与之平级建立了📂12.Java文件夹。 虽然听起来不符合「分类的层级」的常识,但是好处也很明显:
Java.03b.GC案例分析.md这样一个文件名。可能有人会问,父文件夹名字叫12.Java,文件名里就不用以「Java」开头了吧?这样文件名里的「Java」是冗余信息啊。其实这里是特意而为,有个具体操作案例:Vscode 里有个「文件名模糊搜索」功能,快捷键「Cmd + P」,我只需要搜索「Java GC」,这样文件名里带「Java」和「GC」的所有笔记都会被搜出来,当然 Obsidian 里也有类似功能,快捷键 Cmd + O。
文件名的构成里除了表意的前缀,接下来还有序号,作用也是为了让相关联的笔记排序能凑在一起,同时递也方便笔记的「生长」,例如一个笔记内容太大需要拆分成2个笔记,新笔记的序号从 1 递增到1a即可,如果 1a 笔记又变大需要拆分,增加1b笔记即可。这些从一个笔记拆出来的众多子笔记,依然是保持有序的;

上图说明了通过卢曼的编号体系,如何在同一层笔记中表示不同的层级关系:
通过这种命名方式组织笔记,文件夹下面的所有笔记看起来都「平铺」了,但仍可以通过文件名表达出分层的关系,也不会出现「深藏在某个子子子文件夹中的笔记」这种问题了。
「不过早对知识进行分类」,这也符合学习的习惯,刚开始接触某个领域可能只有一篇笔记,我们也不知道这个领域改如何分类,所以开始就不要想「刚开始就把笔记放在合适的分类层级上」,当随着学习的深入,笔记逐渐变大,这时候自然会拆分出新的子类别,让笔记「自然的生长」。
markdown 中的章节是用# Heading来划分的,对于 Heading 的命名也有技巧,Vscode 里支持一种「Symbol 搜索」,Symbol 是什么呢? 对于代码,Symbol 可以理解为函数名字,这个功能可以方便的在一个大的代码工程里快速搜索某个函数。Vscode 里把 markdown 的 Heading(标题) 当做 Symbol,所以在 Vscode里 按Cmd + T,也可以进入 markdown 标题的模糊搜索,快速定位 Heading。相对于上面的「文件名模糊搜索」,「标题模糊搜索」提供了比文件级别更细粒度的检索。至于如何用好这个功能,这就要求我们在书写笔记的时候,对 Heading 的命名用一些心思了,要「言之有物」。

除了Vscode,像Atom、Sublime 等一众现代编辑器都有这个功能(标配),而 Obsidian 则需要通过插件 obsidian-switcher-plus10来实现。
[[ ]] ,Obsidian 默认是用文件名作为链接名的,同时也提供对文件内的 Heading 作为引用块,例如 [[文件名.md#标题名]],如果修改文件名、或者拆分合并笔记,我就不用Vscode 了,而是在 Obsidian 里操作,让 Obsidian 帮我自动更新引用。Java文件夹,就没必要再建立「Java」标签了,但「Java」表示不了的子分类,例如 Java 下面还有更细的子类别:JVM、ClassLoader 等等,这些倒是可以建标签;📂_index文件夹中,在 Obsidian 的 关系图谱中,枢纽笔记向外的连线会很多,让整个图谱显得杂乱,这时候可以在图谱设置里排除掉这个 📂_index文件夹(语法-path:_index),让关系图谱清爽一些。
除了按「某个主题」索引的枢纽笔记,也可以有按「时间线」索引的枢纽笔记,可以方便的看「我这个月记了什么」,当然这种笔记也不是一定要有的,看自己需求,同样也是放在📂_index文件夹。
至此,我的笔记体系的规则说完了,为什么要给自己的笔记格式立那么多规矩? 不累么?无论树状结构、网状结构、或者标签体系,如果管理不好最终都变垃圾场。还记得当年第一个笔记 app 里加过的标签吗? 现在看都不会再看一眼吧。
综上,我的永久笔记的结构是:「单层目录的矮树状结构,同时使用双链构成稀疏的网状」。
至于为什么用这样的结构,还是要从传统的树状结构 和最近时兴的网状结构比较说起。
像 RoamResearch、Logseq 这些笔记似乎已经完全放弃了目录,完全采取完全平铺的方式,通过网状结构展示各个笔记的关系。在笔记系统中,网状结构的特点:
Notion、OneNote、Evernote、Trilium 依然采用传统的属性结构,不同的是 EverNote 的「文件夹」就是个「真文件夹」,什么信息都不能存储,而 Notion 的无限层级结构里,每个节点都是可以存储信息的。除了笔记之外还有思维导图,也算是树状拓扑结构,总结一下树状结构的特点:

不好的例子 1:过于繁杂的树形结构,笔记很容易被遗忘在很深的目录中(试想这种情况下,当我们回顾笔记的时候,需要一层层打开目录,也不知道下一层还有什么),另外「分类再分类」也是一种心智负担:

不好的例子 2:这样的网状结构,不是有效的MOC(Map of Content),这是细菌培养皿:

树状结构便于检索和理清概念层级,很像我们理解知识的过程。
网状结构可以打破固有的层级结构,发现不同领域和层次知识间的联系,同时网状拓扑的建立也像新学习某个知识的过程。这两种结构对于笔记体系都是有帮助的,所以都要。
同时通过上面不好的案例,我们发现,树状和网状的劣势都出现于用力过猛:比如过深的树状文件夹,比如迷宫一样的网状链接。所以,回到 03a 这一章节的开始:我的永久笔记这部分的结构是 「单层目录的矮树状结构,同时使用双链构成稀疏的网状」。
笔记除了书写,更多的使用场景是阅读,如果是在电脑上,我会用 Chrome 直接打开笔记目录,这里还需要一个 Chrome 扩展:markdown Preview Plus,可以把 markdown 预览出来,支持多种主题。还支持 TOC 大纲,笔记的结构一目了然:

笔记里我还会用一些「注解」,就是一些特殊语法,来帮助检索,比如如果我引用到了其他网页,会加 `@ref`标注一下,例如:
@ref: [巧用分类法解决使用卡片笔记时遇到的困境](https://sspai.com/post/71274)
这样有什么好处呢,比如我想统计我的整个笔记库有多少网页引是来自 sspai 的文章,可以用 Shell 命令行,在笔记根目录执行:
grep -irn "@ref" **/*.md | grep 'sspai' | wc -l

同样双链的[[ ]]也可以这样搜索:
egrep -irn "\\[\\[.+\\]\\]" **/*.md
此外,我会用其他的注解,例如 `@todo` =待办,`@toc` =内容大纲,`@tldr`=笔记精要……等等,这些注解都不是标准的 markdown 语法,这样写只是为了让自己的笔记有统一的格式,以及检索方便,因为 Vscode 的搜索都是基于单行的。
关于 #PKM (个人知识管理),这个话题很大也很难用几篇文章说清楚,个人的知识管理体系可能终生都在更新迭代。除了笔记还包括工作流、文献管理等等太多的话题,这里只写一点跟「笔记」相关的,抛砖引玉。
> 下载 少数派 2.0 客户端、关注 少数派公众号,解锁全新阅读体验 📰
> 实用、好用的 正版软件,少数派为你呈现 🚀
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。