前言

在上一次写 Obsidian - 构建着属于个人的神经网络 文章已过去一年的时间,在这些时间中我用它来做技术知识的笔记,常用知识的记录,面试八股文和经验的总结等等。也从之前尝试开始熟悉和了解,到现在已经完全脱离不开的状态,它就如 Obsidian 官网的简介一般,成为了我的「第二个大脑」:

A second brain, for you, forever.

下边这张图是在我自己的「Digital garden」即数字花园 valut 展示的全局的关系图谱:

我会为常见的标签设置不同的颜色,而图中这种形形色色的节点组织成的错综复杂的路径,是不是还真的很像一座充满知识的花园?

正值 Obsidian 官方正式发布 v.1.0.0 版本,带来了外观的优化其他功能的改进。所以这边文章的目的,是我想聊聊在使用了 Obsidian 一年时间后,得到的一些使用上的经验和建议。以及第三方插件的使用,因为我觉得 Obsidian + Plugins 才是我眼中最好笔记的最终形态。

外观

我觉得外观可能也是吸引你使用一款笔记的其中一个因素,回想起最初使用 Typora 时就迷恋于它的简洁的风格,还有丰富的主题库。为了带你「先入为主」,我想先介绍一下 Obsidian 的外观,让你先喜欢上它的外观。

主题

相比于旧版本,在 Obsidian v.1.0.0 中的默认主题得到了很大的提升,变得相对简洁和清新,应该符合大多数人的审美观:

但如果你仍然不够满意或者想尝试其他主题风格,可以在偏好设置(⌘ + ,) → 外观 → 主题 → 管理中选择更多的主题,我比较推荐的极简主题有 :

  1. Minimal(强烈推荐)
  2. Things
  3. California Coast

另外,如果你想在主题上自定义样式的话,可以在外观 → CSS 代码片段中,新建一个 custom.css 文件,在其中添加自定义样式的代码:

例如我会将粗体的颜色修改为彩色,这样比较显眼,那么可以添加:

strong {
	color: #E18C87 !important;
}

这种方式相比于直接修改主题的原 CSS 文件内容,有两个好处:

  1. 可应用于所有的主题
  2. 无侵入的自定义方式,主题文件本身可以更新至最新版本

工作区

和 Premiere 等软件类似,Obsidian 也有工作区Workspace)的概念:它是指由各种面板进行自由地排列,最终组织而成的一个界面。

我目前使用,且推荐的工作区布局如下图所示:

每个面板的含义和作用如下:

  1. 文件目录:传统的文件树状结构,用于浏览文件的位置和层级关系
  2. 内容编辑区:文件内容的编辑框,最主要的区域
  3. 大纲:该文件标题的层次关系,很清晰获取到文章所有的标题信息
  4. 局部关系图谱:以图谱的形式展示该文件与其他文件的连接状态,能够很清晰地浏览该知识的关联关系

最终的效果如下所示:

插件

如果把 Obsidian 的本体比作这座数字花园,那么插件则会是花园中的自动灌溉器、修剪器,为园丁们增加维护花园的工作的效率。

但大多数初次使用 Obsidian 的人们都会陷入一个怪圈 —— 疯狂折腾各种插件,最终却发现实际实用的并不多,而将原本应该专注于内容本身的精力都耗费在了插件当中,适得其反。

安装插件的方式(以及出现无法加载社区插件的情况解决方法)可以参考如何安装 Obsdiain 插件,这里不做赘述。我总结了使用频率最高且功能强大的几个插件,前三个可以理解是功能上的提升,使用逻辑比较简单,下载后尝试使用就可以理解,不做过多介绍。而后两个会有一定的上手难度,需要自定义配置与简单的代码知识。

  1. Advanced Tables:Markdown 表格增强工具,摆脱编辑 MD 表格的痛苦
  2. Note Refactor:重构笔记,可将大文档拆分成小文档
  3. Recent Files:最近访问过文件的历史记录
  4. QuickAdd:模板化的规则来初始化文件,建立约束和提高效率
  5. Dataview:去中心化后,再中心化

这里为了帮助你理解 Quickadd 和 Dataview 这两个插件的设计逻辑和使用场景,会搭配这两个插件实现类似于 Noiton 的 Database 功能,来记录我们的电影观看记录和影评:

QuickAdd

可以从上面 Notion 的表格界面上分析出,这里的名称、状态、类型、评分等信息都可以理解为文件(影评内容)的元信息(Metadata)。而 Obsidian 也是支持这种 YAML 形式的 Metadata 设置,可以参考 YAML+front+matter

那在 Obsidian 的数据库管理体系中,我们把一个文件理解为是一条行记录,元信息则是该条行记录的属性。那《还是觉得你好》这部影评的元信息应该被设置成为:

---
status: 已看
tags: ["喜剧", "爱情"]
score: ⭐⭐⭐⭐
year: 2022
---

在 Notion 中,如果此时我们需要新建一条影评记录,新笔记的窗口中会有相关属性的表单要求你补充。这种规范化的,具有规则性的创建新文件的方式,能够让你在创建不同类型笔记前,填充必要的基础信息:

而在 Obsidian 中,则可以借助 QuickAdd 来实现这种模板化的创建文件的方式,首先我们创建 templates/movie-template.md 作为模板。模板中可以指定属性单选或者手动输入的设置方式:

---
# 单选
status: {VALUE:想看,在看,已看}
score: {VALUE:⭐,⭐⭐,⭐⭐⭐,⭐⭐⭐⭐,⭐⭐⭐⭐⭐}
# 输入(提示)
tags: ["{VALUE:请输入电影的类型:}"]
year: {VALUE:请输入电影的上映年份:}
# 创建时间(时间格式)
datetime: {{DATE:YYYY-MM-DD HH:mm:ss}}
---

其次在设置 → QuickAdd Settings 中新增一个 Template:

Template path 中指定上面我们创建好的模板文件,并开启 Create in folder 属性,将其创建在指定的「娱乐」文件夹下,便于统一管理

通过 ⌘ + P 唤醒命令面板,执行 QuickAdd:Run QuickAdd 命令,选择 Movie Template 的选项,将会经过我们预先设置的单选和输入表单的模板,在「娱乐」的文件夹中创建出一个新的影评文件:

但其实模板创建只是 QuickAdd 的其中一个小功能,除此之外还有可以编排并执行一系列 Obsidian 命令,类似于工作流的 Macro(宏)功能。但平时本人使用的并不多,因此不做过多的介绍和讲解,感兴趣可以参考《Obsidian 最强插件:QuickAdd》 这篇文章。

Dataview

Dataview 是一个知识库的实时索引和查询引擎的插件,可以将数据(即上面提到的 Metadata,对应着影评的状态、评分等信息)与标记页面(文件)关联起来,然后再查询(如过滤、排序、转换)并展示这些数据。

回到我们制作的影评管理功能的场景,当我们通过 QuickAdd 模板化地创建了这些影评数据后,目前并没有统一的入口能够以表格的形式,浏览到所有的影评记录:

前面提到 Dataview 是一种「去中心化后,再中心化的」的思想,使用 Obsidian 的这类以双链和知识图谱为体系的笔记软件,需要转变过去以文件夹,标签作为中心的管理方法,改为以文件为中心去组织知识系统。

而通过这种「去中心化」的方式组织后,又缺失了中心化的浏览文件数据的方式,例如想展示出所有的带 #生物学 的文件,则可以利用 Dataview 来查询携带该标签的所有文件数据并最终动态展示出来:

Dataview 的查询以 Markdown 的代码框的方式使用,通过类似于 SQL 的查询语句,非常自由且简单地组织你的文件数据。拆解上面的查询语句,我们只需要通过 数据展示形式(List) + 关键字(from) + 数据的来源(生物学) 就可以最终展示出一个所有带 #生物学 标签的文件数据:

但其实通过 LIST 的这种展示形式比较简陋,无法展示状态、评分等关键信息,似乎不符合我们影评展示的场景。Dataview 还提供一种 TABLE 的形式,以表格的形式来展示所有的影评文件及其 Metadata 属性,查询语句如下:

TABLE
	-- 定义每个列对应的 metadata 的属性, 并设置别名
	status as "状态",
	tags as "类型",
	score as "评分",
	year as "上映年份",
	datetime as "添加日期"
-- 数据的来源, 这里指定的是文件夹下的所有文件
FROM "娱乐"
-- 根据 datetime 创建时间降序排列(最新创建的在前面)
SORT datetime DESC

效果图如下,达到了类似 Notion 的效果,渲染的表格是动态生成的,意味着你每添加一个文件至「娱乐」的文件夹,就会有新的一条记录显示在表格中,不需要手动进行维护添加:

我们还可以根据电影的评分来倒序排序,创建属于你的影片库「TOP 250」:

上面提到了 Dataview 基本的查询数据(FROM)、排序(SORT)的功能,如果想查询「待看电影清单」、「2022 喜剧电影」这类数据,还需要使用进阶的过滤(Filter)功能。和 SQL 类似,可以使用 WHERE 关键字来对数据根据 Metadata 属性、文件属性(名称、创建时间等)进行筛选过滤。

通过 contains(筛选属性, 值) 可以对影评文件的 Metadata 属性(status、tags)进行文字匹配,同时也支持 >= 的这种范围查询

总之,Dataview 是一个比较强大且复杂的插件,需要话一点时间学习和使用,如果你感兴趣可以参考 obsidian-dataview 官方文档浏览更多的使用方式。

但此时你可能会有一个疑问,同样的效果使用 Notion 也能实现,甚至更简单,相比于 Obsidian + Dataview 来说有哪些优势吗?首先,这里我为了能从场景中学习到插件的使用, 举了个收集整理个人影评记录的例子,这种数据组织的方式,是在最初就已经制定的,即我们先定义好表格的属性和展示形式,然后再往里添加数据。

而 Obsidian 的场景前面也提到,通常我们在做笔记的时候不会采用这种「中心化」的思维来进行,也就是说我们是先有了数据,再到某一段合适的时间后,再衍生出相应的展示数据的形式。其次,从我个人使用角度而言,Dataview 的方式更为自由和清晰,但与此同时也会带来一点的上手难度。

使用经验

上面用了大量的篇幅介绍了 QuickAdd 和 Dataview 这两个插件,虽然网上也有它们的基本使用教程,且官方文档也比较详实。但这里我主要是想通过场景化的方式,能让你有兴趣地,更好理解这些插件的用处。

接下来会去介绍一下我个人的使用经验和一些建议,当然可能不是最佳实践,可以酌情地参考。

如何索引文件数据?

前面反复提到,我们在使用 Obsidian 时我们只会关注于文件内容的本身,而不会关注于该文件需要被放置在哪个文件夹下。那当内容本身积累到一定程度时(假设我们把所有的文件都放置一个目录下),我们应该如何索引这些内容呢?

这里介绍了我在平时使用过程的常见的索引方式,并罗列了它们的使用场景和优缺点,可以适当的参考和使用

  1. 传统文件目录
    • 场景:大类的文件数据的区分(如生活、知识、技术等等)
    • 缺点:找一个文件前需要思考存储在哪个文件夹(尽量只有一个层级,过多嵌套比较显得错综复杂),不太符合这类笔记模式的思维
  2. wiki 形式的双向链接
    • 场景:已经具备相关知识内容情况下,聚合所有的知识点
    • 优点:比较理想,很好地串接和联想知识点
    • 缺点:实现和维护比较困难,且需要具备足够的关联知识
  3. 层次列表的双向链接
    • 场景:类似于思维导图,适合梳理层级的知识点,如:面试八股文
    • 优点:层级的关系便于查找,循序渐进
    • 缺点:需要手动维护无需列表
  4. 类数据库(Dataview)
    • 场景:适合做分类和整理,以及排序等相关功能
    • 优点:简单不需要手动整理,还可以动态生效,灵活且功能强大
    • 缺点:会有一定的上手成本
  5. 全局搜索
    • 场景:只适用于寻找具体文件的场景
    • 优点:快、准
    • 缺点
      • 如果关键词不多且特殊,或记不住具体的关键词很难寻找
      • 需要主动地获取信息,而不是被动接受
  6. 知识图谱
    • 场景:想了解知识的关联关系,串接知识点
    • 优点:直观,适合联想知识点
    • 缺点:能够展示的内容信息并不多(仅连接关系)

工作区的妙用?

Obsidian 除了丰富的第三方插件外,本身的核心插件也非常强大。工作区管理就是其一,我们可以在偏好设置 → 核心插件 → 工作区将其开启:

上面提到工作区的概念,以及我推荐的默认工作区布局。在开启工作区管理功能后,我们可以在最左侧的按钮开启工作区管理窗口,并将当前的工作区布局保存为 Default

我们可以借助工作区这种随意布局面板的机制,来建立一个集中看板,直观并且多维度地来浏览相关的知识数据。例如上面我们通过 Dataview 查询出不同类型的数据,并将其布局组织成一个工作区并展示:

然后可以将其保存为另一个工作区「Movie」,并在「Default」工作区之间随意地切换,进入不同的工作状态:

后记

在使用了这一年中,我发现使用 ob 能激发我对知识收集的欲望,就像是维护着自己的花园,期望看到它们在你的关照下,变得愈加的繁茂。

后来我也把它应用在工作中,使用的场景例如有:每日工作计划、知识图谱帮助理解业务之间的联系、会议纪要等等,让工作变得更加有条不紊和清晰。可能会在以后的时间里,详细说一下这方面的使用经验。

希望这篇文章对 QuickAdd 和 Dataview 插件的使用对你有所帮助,因为我觉得它们是之所以我觉得 ob 如此强大和自由不可缺少的一部分。另外这边文章的 Vault 可以在 obsidian-quickstart 找到,如果之前从来没有使用过 Obsidian,那么我建议可以直接使用这个模板创建,省去了装插件以及设置的麻烦。

也希望你能在 ob 中,建立属于你自己的数字花园。