在上一次写 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 中的默认主题得到了很大的提升,变得相对简洁和清新,应该符合大多数人的审美观:
但如果你仍然不够满意或者想尝试其他主题风格,可以在偏好设置(⌘ + ,
) → 外观 → 主题 → 管理中选择更多的主题,我比较推荐的极简主题有 :
另外,如果你想在主题上自定义样式的话,可以在外观 → CSS 代码片段中,新建一个 custom.css 文件,在其中添加自定义样式的代码:
例如我会将粗体的颜色修改为彩色,这样比较显眼,那么可以添加:
strong {
color: #E18C87 !important;
}
这种方式相比于直接修改主题的原 CSS 文件内容,有两个好处:
和 Premiere 等软件类似,Obsidian 也有工作区(Workspace)的概念:它是指由各种面板进行自由地排列,最终组织而成的一个界面。
我目前使用,且推荐的工作区布局如下图所示:
每个面板的含义和作用如下:
最终的效果如下所示:
如果把 Obsidian 的本体比作这座数字花园,那么插件则会是花园中的自动灌溉器、修剪器,为园丁们增加维护花园的工作的效率。
但大多数初次使用 Obsidian 的人们都会陷入一个怪圈 —— 疯狂折腾各种插件,最终却发现实际实用的并不多,而将原本应该专注于内容本身的精力都耗费在了插件当中,适得其反。
安装插件的方式(以及出现无法加载社区插件的情况解决方法)可以参考如何安装 Obsdiain 插件,这里不做赘述。我总结了使用频率最高且功能强大的几个插件,前三个可以理解是功能上的提升,使用逻辑比较简单,下载后尝试使用就可以理解,不做过多介绍。而后两个会有一定的上手难度,需要自定义配置与简单的代码知识。
这里为了帮助你理解 Quickadd 和 Dataview 这两个插件的设计逻辑和使用场景,会搭配这两个插件实现类似于 Noiton 的 Database 功能,来记录我们的电影观看记录和影评:
可以从上面 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 是一个知识库的实时索引和查询引擎的插件,可以将数据(即上面提到的 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 时我们只会关注于文件内容的本身,而不会关注于该文件需要被放置在哪个文件夹下。那当内容本身积累到一定程度时(假设我们把所有的文件都放置一个目录下),我们应该如何索引这些内容呢?
这里介绍了我在平时使用过程的常见的索引方式,并罗列了它们的使用场景和优缺点,可以适当的参考和使用:
Obsidian 除了丰富的第三方插件外,本身的核心插件也非常强大。工作区管理就是其一,我们可以在偏好设置 → 核心插件 → 工作区将其开启:
上面提到工作区的概念,以及我推荐的默认工作区布局。在开启工作区管理功能后,我们可以在最左侧的按钮开启工作区管理窗口,并将当前的工作区布局保存为 Default:
我们可以借助工作区这种随意布局面板的机制,来建立一个集中看板,直观并且多维度地来浏览相关的知识数据。例如上面我们通过 Dataview 查询出不同类型的数据,并将其布局组织成一个工作区并展示:
然后可以将其保存为另一个工作区「Movie」,并在「Default」工作区之间随意地切换,进入不同的工作状态:
在使用了这一年中,我发现使用 ob 能激发我对知识收集的欲望,就像是维护着自己的花园,期望看到它们在你的关照下,变得愈加的繁茂。
后来我也把它应用在工作中,使用的场景例如有:每日工作计划、知识图谱帮助理解业务之间的联系、会议纪要等等,让工作变得更加有条不紊和清晰。可能会在以后的时间里,详细说一下这方面的使用经验。
希望这篇文章对 QuickAdd 和 Dataview 插件的使用对你有所帮助,因为我觉得它们是之所以我觉得 ob 如此强大和自由不可缺少的一部分。另外这边文章的 Vault 可以在 obsidian-quickstart 找到,如果之前从来没有使用过 Obsidian,那么我建议可以直接使用这个模板创建,省去了装插件以及设置的麻烦。
也希望你能在 ob 中,建立属于你自己的数字花园。