一、现状
- 文件夹层级太多,杂乱,且一层层点下去,比较麻烦
-
笔记逐渐增加后,标签系统紊乱
-
孤岛笔记太多,经常在写笔记时,没没加双链
-
纯文件夹管理笔记,造成文件夹层级复杂
-
纯标签管理笔记,查找不便,且 Obsidian 最大特色的双链接,没有得到施展
二、弊端
三、解决
参考:Obsidian双链框架AMOC,更简单的PARA、卡片笔记方法 – 经验分享 – Obsidian 中文论坛 根据自己实际使用情况,进行了如下修改:
- 文件夹层级不超过两成
-
结合 templater、dataview、quickadd,实现一一定程序的自动化
步骤 1:上级索引
AMOC步骤中最关键的一点,就是在笔记中我们要告诉它,它的上级索引是谁,并写上:
up:: [[上层目录]]
双冒号为Dataview能识别的属性,后续步骤的Dataview都基于此项进行双链识别。
步骤 2:同级索引
当 A 笔记及其他笔记都存在 up:: [[Z笔记]]
,即同时指向Z笔记时,在A笔记中加入下面的code,即可实现同级AMOC,无需理解直接Copy Paste即可。
list
where up !=undefined and contains(up,this.up) and !contains(file.path,”模板”)
sort file.name
limit 10
步骤 3:下级索引
当B、C、D笔记都输入了up:: [[A笔记]]
,即同上级索引指向A笔记时,在A笔记中加入下面的Code,即可实现BCD的集合。
list
where up !=undefined and contains(up,this.file.link) and !contains(file.path,”模板”)
sort file.name
limit 10
这段代码的差别仅仅只是把步骤2的this.up 换成了 this.file.link
,即可实现。
不管我们是从笔记外部调整了它的树状图还是标
同时读取两层:
const listLimit =10
const calloutSytle = “>> [!abstract] “
//过滤掉日记、excalidraw、canvas的MOC 和模板
let filterPages = dv.pages()
.filter(p =>
p.file.path.contains(“模板”)==0 &&
p.up )
.sort(p => p.file.name,”asc”)
let pages = filterPages.filter(p => String(p.up).contains(dv.current().file.link))
let formatMulti = “> [!multi-column]\n> “
let nextlevel = pages.map(async(page) => {
return calloutName + page.file.link
})
//console.log(arr)
for (let page of pages) {
var uplink = page.file.link
formatMulti += “\n” + calloutSytle +
if(filterPages.where(p => String(p.up).contains(uplink)).file.length!=0)
formatMulti += “\n>> – “+filterPages.where(p => String(p.up).contains(uplink)).limit(listLimit).file.link.join(“\n>> – “)
else
formatMulti += “\n>> 无”
formatMulti += “\n>”
}
dv.paragraph(formatMulti)
考虑到它的易用性和可维护性,2层AMOC足够,适可而止。
AMOC在不同操作下的简单之处:
- 新建:任何位置新建,笔记中写上
up:: [[上级目录]]
,自动添加到目录当中。 -
修改:分类、归档等调整,笔记中修改
up:: [[新的上级目录]]
,自动纳入到新的目录,如Inbox、Done、Achieve当中。- 一开始的时候,《摄影》的 上层AMOC为《橙猫涉影》,但因为用的太多,需要多层AMOC跳转,我直接对《摄影》修改
up:: [[Homepage]]
即可建立新的AMOC。
- 一开始的时候,《摄影》的 上层AMOC为《橙猫涉影》,但因为用的太多,需要多层AMOC跳转,我直接对《摄影》修改
- 延伸:采用了contains 写法而不是 up=this.up,提供了更多的可拓展性,让笔记的 up 可以指向多个AMOC笔记。
- 这篇文章一开始放在公众号下,但后来忘记了,去 ‘Obsidian MOC’ 下找不到,这种有交叉属性的,可以同时放到up中
up:: [[公众号]], [[obsidian MOC]]
,当然也可以用标签来实现,只是个人更喜欢AMOC的方式,我的标签有另外用途。
- 这篇文章一开始放在公众号下,但后来忘记了,去 ‘Obsidian MOC’ 下找不到,这种有交叉属性的,可以同时放到up中
基于 AMOC 搭建 PARA
PARA在笔记中很受欢迎,我用AMOC组织了相关文件,模板文末有提供下载。 搭建PARA,只需要5个笔记:
- 结构中心.md
laoxiongb2c 作为总控 -
代表PARA的4个笔记,粘贴下面内容即可:
up:: [[PARA结构中心]]
[!note]- 最近编辑:当前文件夹下
dv.table(["文件","修改时间"],dv.pages() .filter(p => p.file.folder.contains(dv.current().file.folder) && p.file.name!=dv.current().file.name) .sort(p => p.file.mtime,"desc") .limit(10) .map(item => {return [item.file.link,item.file.mtime]}))
=this.file.name
YAML中的cssclasses采用list-card,横向显示list,需搭配主题Minimal使用
AMOC
[!note]- AMOC Standard
LIST where up !=undefined and contains(up,this.up) and !contains(file.path,"模板") sort file.name limit 10
[!note]- AMOC Down
LIST where up !=undefined and contains(up,this.file.link) and !contains(file.path,"模板") sort file.folder asc limit 10
Templater 自动化
使用Templater函数,获取索引目录下当前创建文件的索引笔记,填充到 up:: 和 tag ““中
<%*
const link = "其他/索引/" + tp.file.folder()
const tag = "#" + tp.file.folder()
-%>
<% tag %>
up:: [[<% link %>]]
[toc]
必须 注册 为本站用户, 登录 后才可以发表评论!