玩物誌四
1.初衷
为什么是用obsidian就不罗嗦了,能找到这里的人都会有自己的理由。自己刚接触ob的时候感觉十分复杂,也是通过网上的信息零碎的边学边用,走了不少弯路,中文帮助对入门也不是很友好,一些大佬写的文章也是针对某一方面深入的讲解举例,太高端,上手困难。所以决定写一篇入门的引导手册,算是对自己的总结,能帮到有需要的人更好了。
2.了解obsidian
2.1从这里开始
2.1.1获取ob相关资源的途径:
- 全平台官网下载地址:https://obsidian.md/download
- 英文论坛地址:https://forum.obsidian.md/
- 中文论坛地址:https://forum-zh.obsidian.md/
- 官方帮助文档地址:https://help.obsidian.md/Home
- Markdown官方教程:https://markdown.com.cn/intro.html
- 即凉制作的入门视频:https://youtu.be/30r6p4g_j9c
- 清单控沙牛制作的公开课:https://youtube.com/playlist?list=PLJXjFhcT1E2zHzxLQIrKdsH3IVBXx6Hcy
这里记录的是一些有效信息的获取渠道,不是让大家先从这里开始学习,不学就不能用了,存下备用就好,下面简单介绍下它们的用途。
2.1.2说明:
- 下载地址无需多说,根据需要下载即可。补充一点,chromebook如果想使用桌面版的软件需最好下载相应架构的Appimage来使用,其它Linux版会有这样那样的问题(别问我怎么知道的)
- 英文论坛热闹点,英文好是个不错的选择
- 中文论坛没那么热闹,不过有不少达人发的贴子技巧性很强,闲来可以扩充知识,也可以知道些高级的用法
- 官方文档是必看的了,虽然组织上不太好上手,但贵在权威全面准确,也可以当作查询手册使用,在需要某个功能时看看。其关于Obsidian设计哲学可以好好看看,能更好的理解设计者的初衷,才能更好的使用这个软件
- Markdown的教程可以当作查询手册,这个语法先了解些基本的就可以了,多用才能知道自己需要什么,需要了再找来学也不迟
- 这个视频介绍了ob的初始设置相关信息,大家可以从这里开始了解ob
- 如果想了解更多的是用方法可以看看这个up主的公开课,比较全面
2.2使用
2.2.1基本概念
2.2.1.1库(vault)
Obsidian是本地存储笔记的,软件管理笔记的方式是文件夹,库就是本地笔记的根目录,以后在软件中建立的文件夹和笔记都在这个根目录下。当首次打开软件时需要你新建一个库或者打开一个已经存在的库,然后才能开始其他操作,库是一切的开始,包括后面对软件的一些配置信息也是存在库中 .obsidian
文件夹里,因此不同的库可以有不同的配置,在不同库中复制这个文件夹就可以使其有相同的配置。
注意严格讲所有的操作都限在一个库里,你不能从一个库链接另一个库的笔记,搜索的范围也限定在当前库内,不会搜索到其它库,因此彼此关联的笔记只能放置于同一库中,库的建立须是小心的。
2.2.1.2文件夹(folder)
Obsidian中文件夹的概念和常规的概念、用法都相同,在软件中建立的文件夹也会在实际目录中建立同名的文件夹。关于文件夹的用法,可以用来详细分类管理笔记,也可以仅做为大类存储笔记,看个人喜好,后面还会详细讨论这个问题。
2.2.1.3笔记(note)
2.2.1.3.1笔记主体
笔记的主体即是我们记录的内容了。
2.2.1.3.2元信息(metadata或者front matter)
元信息即是关于笔记的笔记。每篇笔记除了我们需要的主体知识,可能还会有一些背景信息需要记录,例如,信息的来源、作者、主题、分类、别名等等,这些信息当然可以放在笔记主体里,但最好的方法是以元信息的方式存储,当笔记数量庞大后便于统计展示分析。
元信息以两排分别三个-
组成的信息块与笔记主体区分,并且只能放置于笔记的最开始,其前面不能有其它内容,否则不能识别。下面是一个例子:
---
Author: 张三
Date: 2023-07-28
Address: https://www.123456.com
Aliases: [xiaozhang,小张]
---
说明:
- 元信息中所有标点符号必须是英文的
- 信息由两部分组成,信息名称为字段,英文冒号以前的部分,以英文书写,不区分大小写;信息的值为冒号后的部分,与冒号之间必须留一个空格,中英文都可以,区分大小写,当有多个值时必须使用英文
,
间隔开。
自带元信息(属性):
除了以上自定义的元信息,每篇笔记从生成时就会产生一些自带的属性信息,如创建时间、修改时间等等。这类元信息无需人工修改,且可以被调阅直接使用,包括后面介绍的Dataview插件都可以调阅这些信息。下面是自带元信息列表,供参考:
文件属性 | 字段类型 | 属性说明 |
---|---|---|
file.name | Text | 文件名 |
file.folder | Text | 所在文件夹 |
file.path | Text | 完整路径 + 完整文件名 |
file.ext | Text | 扩展名 |
file.link | Link | 链接至本文件 |
file.size | Number | 文件大小 (bytes) |
file.ctime | Date Time | 创建时间 |
file.cday | Date | 创建日期 |
file.mtime | Date Time | 最后修改时间 |
file.mday | Date | 最后修改日期 |
file.tags | List | 文中的 #标签 和 YAML 中的 tags |
file.etags | List | 文中的 #标签 和 YAML 中的 tags |
file.inlinks | List | 反向链接 |
file.outlinks | List | 正向链接 |
file.tasks | List | 文中的任务列表 |
file.lists | List | 文中的列表 (包含任务列表) |
file.frontmatter | List | 文件中的 YAML 块内容 |
file.starred | Boolean | 加星 |
2.2.1.4链接(link)
链接是从库中的某篇笔记出发,指向其它文件的链接。类似于我们熟知的超链接。是Obsidian的灵魂所在,后面会详细说明。
2.2.1.4.1内部链接(insidelink)与外部链接(outsidelink)
所谓内部链接指的是从库中某篇笔记出发,指向库中其他文件的链接。反之,如果是从库中某篇笔记指向库外的文件、网页,则为外部链接。
正常Markdown格式的链接书写方式是 [文件名](文件地址)
,(补充下,标点符号必须英文),这也是外部链接使用的方式。
对于内部链接,obsidian为提升效率使用 [[文件名]]
,即wikilink的方式书写,更加简单,而且每当输入部分文件名后会自动弹出包含该文件名的候选文件,直接选择就可建立链接,省去输入全名的麻烦。
另外,须要注意的是wikilink只是obsidian自己特有的书写方式,不能被其它软件识别。
2.2.1.4.2反向链接(backlink)与出链(outgoinglink)
Obsidian作为双链笔记软件,每则笔记都记录了反向链和出链,反向链是指向该则笔记的链接,出链是本则笔记指向的链接。正是通过这些链接,obsidian为我们建立起了一个知识网,使笔记的管理方式更加符合探索知识的路径,每个知识点不再是孤立的。通过关系图谱(gragh view),就可以查看每则笔记(知识点)所形成的知识网络。
2.2.1.5插件(plugins)
Obsidian本身只提供基本的笔记编辑功能,其它丰富的功能都是通过插件实现,这正是ob的强大之处。插件有开启和关闭两个装态,安装好的插件只有在开启后才能发挥作用。
2.2.1.5.1核心插件(core plugins)
核心插件是软件自带的插件,由官方提供。其中一些是默认开启的,一些可以根据自己的需要开启。
2.2.1.5.2第三方插件(community plugins)
第三方插件是由社区开发和维护的,以应对不同的需求,其中不少神级的插件,让obsidian变的十分强大。
第三方插件又分为两种,一种是在官方注册上架的(截止2023-07-29已经有1k+),其安装方式十分简单,在 设置-第三方插件-流览
找到需要的插件直接点击安装即可,当然装好后还需启用一下。这里有一个注意的地方,由于插件是托管在GitHub,所以只有特殊上网方式才能看到流览内容,所以你懂的。第二种是作者尚未上架的插件,这种就需要自己下载安装文件手动安装了,其安全性和稳定性还有待考察,风险只能自担。
另外特别提示下,对于一些比较小众的插件,其安全性和稳定性都存疑,特别是需要网络功能的,因此建议可以在一个新库中测试下,没有问题再装到主用的库中,一方面确保隐私安全,另一方面也是确保不会因为这个插件导致笔记的丢失。那些下载使用量较大的就不存在这个问题了,用户的眼睛是雪亮的嘛。在插件流览界面每个插件的右上角标注有下载量。
2.2.1.6标签(tags)
标签的定义与别处无二致,书写方式为 #标签名
,中间无空格符。而且使用也非常灵活,可以添加在笔记的任何位置。但当添加在正文中时需要注意 #
需要与前文间留有一个空格符。
另外,obsidian还支持多级标签,书写方式为 #一级标签/二级标签
,可以在左侧标签流览窗口看到分级展示。
2.2.2Obsidian运用
2.2.2.1基本用法
软件的基本使用方法这里不再赘述,官方帮助文档有详细说明,建议看下“用户界面”和“使用指南”两个部分就可以开始使用了,每条内容都不多。
因为这个软件功能丰富且强大可塑性强,所以网上有很多介绍如何使用该软件打造什么什么系统,实现什么什么功能的教程。这些丰富的信息让很多人无从下手,一时摸不清obsidian到底能干什么,怎么用。其实obsidian就像其图标一样,一块稍加雕琢,等待使用者进一步完善成作品的原石,它可以成为任何你想成为的样子,而且是属于你自己的样子。所以先用起来,哪怕只是最基本的功能,随着使用,你会有新的体验,新的需求,再根据这些体验和需求,或调整设置,或增加新功能,逐渐完善自己的系统。
另外的建议,obsidian的插件系统是强大的,第三方插件功能也是五花八门,软件本身的界面也具有极强的自定义性,因此很多人都会陷入不断折腾插件、外观、功能实现上的误区。要记住这是一个工具软件,要记住使用这个工具的目的,不要把重点放在打造工具上,那就本未倒置了。我的建议是从基本功能用起,有新的需求看看核心插件未开启的能否实现,不行看看第三方插件能否实现,再不行上论坛看看有没有相似的需求,最后的最后你是可以自己写个插件实现这个没人用的功能的。
2.2.2.2运用原则
2.2.2.2.1笔记管理
这里讨论的是在拥有大量笔记的前提下该如何有效的管理这些笔记。有些人建议使用文件夹,有些人建议使用内容地图(MOC)。Obsidian就是这么开放,两种方式都给你,任君选择。其实只要是自己用着顺手就好了,有什么比舒服更重要。
但是,但是,别忘了在官方帮助文档的自我介绍中有这么一句:“链接是第一优先梯队!” 因此obsidian团队才设计了灵活的内部链接,保留了反向链接和出链,所以,不使用这么独特而强大的功能岂不是对软件的浪费。
这里给出我的做法供参考。文件夹最大的问题是不够灵活,没人能一开始就想象得到自己的全部分类,跨文件夹笔记不好存储,后期维护成本高。索性不用,改用索引。当然,不是完全不用文件夹,只是做功能区分,不分类管理。比如保留附件文件夹、笔记文件夹、模板文件夹,顾名思义,简单明了。自己所记录的笔记将全部存入笔记文件夹,同时建立一个不断更新的索引笔记,其它笔记将全部直接或间接的链接到索引笔记。由于是基于链接,所以跨类别笔记可以链接到任何位置,这也意味着无论从哪个点出发都能找到他。后期维护的成本也仅限于这个索引,还可以复制一份留作调整时的备份。
2.2.2.2.2标签的使用
标签可以说是第三种管理方式,那为什么单拎出来呢?我觉得它挺特殊的。
首先,其使用上确实很灵活,任何位置,任意数量,想怎么加就怎么加,真方便。
其次,也正是它的灵活导致一个问题,标签多了怎么办?一旦数量上来先不说找起来麻烦,就说添加新标签就是个问题,因为不同时境我们对同一事物可能有不同看法,总不能每次命名前都找找有没有类似的。
鉴于obsidian标签的灵活性,我觉得在obsidian中标签不适合用于提炼,更适合标注状态。提炼的任务完全可以交给元信息,存储个主题、别名之类的,也满简单的。因为主题、别名不用于分类,那是索引干的,所以重复与否并不重要,他们只是此时此境自己对笔记的理解。
那么标签标注什么状态呢?除了知识管理,obsidian还可以用作任务管理,任务是有状态的,比如简单的“开始”、“结束”,当然也可以加入更多,像“等待”什么的。但无论如何,其数量是一定的。而且obsidian对于已存在的标签可以自动补全,这在更改任务状态时也提供了便利。后面再配合Dataview插件就可以实现任务的自动分组管理。只是调整下标签任务就自动去了该去的地方多方便。
3.插件体验分享
只记录我用过的插件不定期更新。
3.1时间戳笔记(核心插件)
建立以当前时间戳为标题的笔记,可以指定生成笔记的存储位置和使用的模板,以及时间格式。其英文名为unique note creator,直译过来是独一无二笔记生成器,因此如果时间格式定义为2023-01-01,那同一天再建就变成了2023-01-02,不对了。因此最好精确到分钟,极致点精确到秒也是可以的。自定义时间格式的书写方式可以直接参考输入框上面的参考链接。
3.2Dataview(第三方插件、必装)
一款强大的统计类插件,充分利用元信息为我们建立动态的笔记。当然这个插件强大所需要的就是一点学习成本,但基本的功能没多复杂,后面专开一节介绍下,没得问题。其还有一个进阶的用法是开启Dataviewjs选项,可以生成更加复杂的结果,但学习成本相对高点,我觉得也没必要,工具嘛,没必要搞的那么复杂,自个用的东西,炫给谁看呢。
3.3Kanban(第三方插件)
一款可视化管理任务状态的插件,可以直接在不同状态间拖动实现状态转换,用于项目跟踪不错。但我利用Dataview和标签可以实现其目标功能,只是没有可视化界面,但效率更高,所以该插件可以依个人喜好安装。
3.3Make.md(第三方插件)
一款仿Notion的插件,喜欢的朋友可以试试。但其在安卓手机端显示会有问题。不咋用手机ob的可以试试。
3.4Share as gist(第三方插件)
利用GitHub的gist功能实现免费分享自己的笔记。但由于gist不渲染网页,所以是Markdown笔记直出,观感上不太好,不介意的可以试试。
3.5Dayplanner(第三方插件)
利用to do list和时间点,实现每当日任务规划,在侧边栏显示任务时段,并有当前时间线提示。使用简单,每天开始就要生成一则笔记,规划一天的时间任务安排,当然可以借助Calendar插件调用模板自动生成框架,自己填人具体内容,适合每日生活都有条理严谨的人。
3.6Calendar(第三方插件)
此插件与笔记本身联动,生成每日笔记并管理,适合写日记或做每日或每周规划、总结之用。不能用于日程管理。
3.7Full calendar(第三方插件)
此插件是真正的日程管理用,利用的笔记元信息,故Dataview可以实现其简单功能,但周期性日程Dataview不易实现,而且日程录入不如full calendar方便。手机上在侧边栏即可显示三天、一天,或者简明日程列表,也可以以笔记的形式打开月历。桌面版侧边栏即可显示月历。唯一问题,该插件不能设置提醒时间,因此有此需求的不适合。
3.8Advanced Tables(第三方插件、必装)
Markdown语法对表格的输入方式支持的不友好,导致在obsidian中表格操作十分麻烦。这款插件正好弥补这个问题,生成变的简单快速,调整也有了图形化的方式,一定要用。
3.9Clear Unused Images(第三方插件)
该插件会检索库中的全部图片,找出那些没有被链接的孤立图片并删除他们,适合刚从其他笔记软件转过来,或者用了一段时间,产生了一些垃圾图片的同学。逻辑就是没被链接的图片既是没有用的图片,删除前需要确认的。
3.10Digital Garden(第三方插件)
一款分享笔记的插件,使用也是满简单的,跟这个教程很快就能发布成功。注意这里是发布的是公开链接,只要有地址谁都可以访问,需要小心。
3.11Remotely Save(第三方插件、必装吧)
一款免费的同步插件,支持S3、Onedrive、Dropbox以及webdav。之所以加个吧是因为官方提供了不同设备间的同步功能,但需要付费,所以想免费用的就是必装了。该插件支持E2E加密,所以敏感些的笔记放网盘上也没关系。重点是支持webdav,这个玩法就多了,可以是用一些大厂免费的,也可以自己搭建。
3.12Hover Editor(第三方插件)
该插件适合桌面版ob,当鼠标悬停在链接上时,ob会弹出预览页面,这个插件可以增强预览页面的功能,让你直接可以在预览页面编辑,提升效率。
4.Dataview插件介绍
4.1总体
Dataview是一种借助代码的查询插件。与ob自己的查询不同,dataview做的是统计工作,统计的目标是元信息(包括了笔记自带元信息和自定义的元信息),并不能检索全文。由于其查询是实时的,所以可以为我们生成动态的结果展示。如此我们就可以进行笔记追踪、任务管理、习惯养成等等动态的用途。
4.2语法
这里只介绍基础的语法,很简单,不再深入dataview js。
```dataview 第一行
List 第二行
From 第三行
Where 第四行
Sort 第五行
Group by 第六行
``` 第七行
- 第一行和第七行用 “```”把代码块与笔记其它部分区分开,是markdown的基本语法。同时在第一行要加上dataview名称,这样插件才会识别并执行这段代码
- 第二行是标明结果的展示方式,目前共有四种:list(列表)、table (表格)、task (列出笔记中的to-do项)、calendar(以日历的形式展示,目前会出现显示两个日历的bug,刷一下dataview就没了,不过随机的还会再出现,但是两个日历是独立的,可以切一个而不影响另一个,这样也好,可以同时对比两个月的了,呵呵难道是故意的?!)
- 第三行from很好理解,就是数据从哪来。可以是文件夹、标签、链接或者笔记名。文件夹需要用英语的
""
给括起来。 - 第四行是筛选的条件,后面通过举例列出使用方式。
- 第五行是排序方式,这行是可选的,没有也没关系。
- 第六行同样是可选项,是分组的依据。
完结,还是很简单吧,掌握以上就可以实现很多功能了,依靠自己的创意可以建立不同的动态笔记,下面举些例子供大家参考。
4.3砖头
就如同我前面介绍的,obsidian是一块原石,他能实现什么样的功能全看个人的用途。我呢主要用途就两块,一个是任务管理,一个是个人知识管理系统。我们先从这个任务管理开始介绍dataview吧。
4.3.1任务管理系统
这里任务管理系统建立的方式依据的是《搞定》一书中介绍的方法,有兴趣的朋友可以弄来看看。该系统的目标是收集一切待处理的任务,并进一步跟踪记录确定每一步行动,其实就是一个任务索引页。使用一级标题去分为三个部分,包括:收集(一旦有需要处理的事情或记录的知识都放这里,讲究一个快速记录)、下一步行动(将前一步收集的任务进行细化,列出具体的行动步骤,以to-do列表的方式呈现)、终结的任务(收录处理完毕的任务)。这里只是简单举例,根据自己的需要添加就好了。
在索引页将任务根据状态不断更换位置是比较麻烦的工作,借助dataview我们就可以实现任务自动去到自己该去的地方,另外我们还需要一个帮手,就是标签。
对于标签的用法,很多人喜欢用其提炼文章的关键字,以备将来检索使用,但这样做有一个问题,随着笔记的增多,标签肯定会越来越多,新增标签的难度会逐渐增大,如何将地标签的重叠率是个艰难的工作,而且大量的标签检索也不见得就会提高效率。因此我觉得标签最好的用法是作为状态标识使用。因为状态是有限的,所以标签也是有限的,管理标签就不是个问题了。
这里我就是使用标签标识任务的状态,如 #收集阶段
、#执行阶段
、 #终结阶段
,而且标签支持分级,那么可以根据任务执行的环境需求进一步分类,如 #执行阶段/办公室
、#执行阶段/家
、#执行阶段/电脑
、 #执行阶段/外出
等等。然后,通过简单的修改标签,实现任务状态自动切换。
下面来看下具体的dataview代码:
4.3.1.1收集阶段
```dataview
list
From #收集阶段
Sort file.ctime asc
```
说明:
- 第二行表明本块是用列表的方式展现
- 第三行表明只列出标签为“收集阶段“的笔记
- 第四行表明按照笔记的创建时间进行排序,
file.ctime
是笔记自带元信息,为笔记的创建时间,asc
是正序的意思,还可以替换为desc
倒序的意思
4.3.1.2执行阶段
```dataview
Task
From #执行阶段
Where !completed
Group by file.etags
Sort file.mtime asc
```
说明:
- 第二行表明本块展示的是笔记中的to-do清单,即是我们需要进行的下一步具体行动
- 第三行表明只列出标签为”执行阶段“的笔记
- 第四行where是筛选条件,本例子中条件是尚未完成的步骤,也就是笔记中尚未打勾的to-do项
- 第五行是要分组的意思,分组的依据是标签,这里使用的是
file.etags
,与file.tags
不同,etags会进一步按照更低级别进行分类,这样就自动区分了我们是要在办公室还是家里,或者外出还是在电脑上处理下一步的工作 - 第六行还是排序,这次的依据是
file.mtime
,也就是笔记的修改时间
4.3.1.3终结阶段
```dataview
Table
From #终结阶段
where startswith(file.name,"2023") and contains(Projecttype,"私人")
Sort file.ctime asc
```
说明:
- 第二行表明本块的展示方式为表格,但没有列出需要展示的列,那么这里就只有文件名一列。有朋友可能会问,那干嘛不用list,主要这个table方式会有个总数统计,不需要的用list也一样
- 第三行表明只列出标签为”终结阶段“的笔记
- 第四行where的筛选条件稍微复杂了一点,注意里面的符号都是英文的,字符串是用"括起来。
startswith
就是以什么开头,筛选的字段是file.name
,即是笔记的名字,英文逗号后面是筛选的值,这里是2023,我的任务笔记名都是以时间开头的,这样就筛选出来2023年的笔记;后面还有第二个条件,使用and
进行连接,表明二者的关系是必须同时满足,而且and
前后都必须留一个空格,根据需要也可以是用or
连接,那就是二者满足一个就可以;第二个条件contains
的意思是包含,这里我的筛选字段是自定义的元信息projecttype
,是创建笔记时录入的,主要用途是区分下是工作上的任务还是个人生活上的任务 - 第五行sort就是按照笔记创建时间进行排序了
4.3.2物品存放位置记录
这个主要是给那些记性不好,丢三落四的人准备的,而且正是我需要的,哈。
4.3.2.1元信息
首先,我们建立一个名为Locationote的笔记模板:
---
notetype: 置物记录
object: {{title}}
quantity:
unit:
location:
date: {{date:YYYY-MM-DD}}
---
用完即删
没错,就是一个笔记的元信息。
- 第一行:记录笔记类型
- 第二行:记录存放的物品,这里我们使用了ob自带的参数title,这样我们在建立笔记时直接输入存放的物品名称,再调用模板时,存放物品这栏就自动输入物品名了
- 第三行:记录数量
- 第四行:记录数量的单位
- 第五行:记录物品具体的存放位置
- 第六行:记录物品的存放时间,自动生成的是当前日期
那个 用完即删
是我随便加的,提醒自己,不需要记录直接删除就好了。有了这个元信息模板,我们每次需要记住东西放在哪里时只需要建立以物品名命名的笔记,然后调用这个模板,填入相关信息就可以了。
4.3.2.2dataview代码
```dataview
table without id file.link as "物件",quantity as "数量",unit as "单位",location as "位置",date as "存放日期"
from "notes"
where contains(notetype,"置物记录")
sort location
```
说明:
- 第一行:声明是dataview代码
- 第二行:声明展示方式是table,也就是表格。
without id 表明不要展示文件名;
后面是需要展示的信息列,这里包括默认信息file.link,自定义信息quantity、unit、location、date,as表示将列信息更名为自己想要的展示名称,比如,file.link更名为物件,quantity更名为数量,as前后都需要是用空格隔开,不同字段间是用英文的 ,
隔开
- 第三行:声明获取笔记的范围,这里使用的是存放笔记的文件夹,需要是用英文 ""
将文件夹名括起来
- 第四行:声明筛选笔记的条件,这里使用的是在笔记元信息中包含置物记录的笔记
- 第五行:就是一个排序,依据就是元信息的location字段,即物品的存放位置
展示效果:
其他相关资料请点击索引目录。