如何筛选出近一周创建或更新的line/block?

业务场景:有几个基于领域建立的业务大文档,每天会往里添砖加瓦。想知道一周、一月业务文档里都增加、编辑了哪些line/block。

请问各位大佬,如何实现呢?query 、左上角搜索、dataview貌似都能实现,但谷歌一番官方教程,未找到基于line/block进行时间筛选的语法,请指教!!

见此

line的创建时间、修改时间用正则如何表述呢?

ob本体没法做到这个功能…因为ob只记录笔记文件的元数据,而不是记录文件里每个段落的元数据。

就是说在block、section、line数据库设计的底层,没有创建时间、修改时间这样的字段?

类似这种的语法

是啊,要知道markdown作为纯文本文件,一切的数据都是可以被看到的,不存在有的元数据会被隐藏起来,除非添加额外的支持,比如在每一行自己添加时间,不过那样会麻烦的要死

请问大佬,有没有其他插件能辅助完成我的业务需求呢?我之前业务文档10万字左右,有树状的知识架构。每次有补充均会在特定的地方新增内容。可想筛选近一周到底新增了哪些内容(方便写工作周报、复盘),就完全没有办法

可以反过来:先按时间建立每日笔记,方便复盘;然后再使用链接将每日笔记整理到树状框架/汇总页中。

有一种情况适合于你说的,就是内容本身比较扁平。比如“每日晚餐打卡”、“每日幸福感想”、“创业灵感”、“记一件小事”。这种在每日笔记里体现,然后加个标签即可

但是我指的这种内容,有些需要放到A项目-a客户-爱好下;有些需要放到B行业-c公司- d部门下。 我其实想把内容直接放到树状框架里,类似数据库,是客观实体,更直观些;而每日创建的笔记、每周修改过的笔记也好,在我看来类似视图,是根据不同的查询需求创建的虚拟镜像

这篇文章解答了我两年前的困扰, 電腦玩物站长真强 :+1: 如何在大量任務中管理日誌? Obsidian、 Logseq 的防彈筆記實踐

感谢推荐文章
看了下, 这办法有点像是 “Daily Notes 无压记录” 的反面, 即

  • 笔记 “本体” 存各个项目里
  • 笔记的 “线索” 存在 每天日志 里

我最近有几个发现跟大家分享:

1
除了对笔记的小标题做块嵌入, 也可以 在嵌套列表上使用块嵌入, 且可精细控制嵌入多层级列表的每个层级, 例

- 列表总条目
    - 子条目1
    - 子条目2          ^blockref-a
        - 孙条目111
        - 孙条目222    ^blockref-b
    - 子条目3

^blockref-c

其中

  • ^blockref-a = “子条目2 以及下属”
  • ^blockref-b = “孙条目222”
  • ^blockref-c = “整个多层列表”

还挺细致, 符合直觉


2
嵌入视图如果是个列表任务 - [ ] xxxxx 可以直接勾选任务完成, 不必回到原先笔记


3
插件 Text Transporter 可以在不同笔记间快速 “搬运段落 / 嵌入段落”, 在这个工作模式下挺实用, 就是这插件提供功能有点乱…

补充:

关于第 1 点,相关推荐坛里考据文章 什么是块,具体如何记笔记有利于块链接

关于第 3 点,如果只是指 Text Transporter 的 Copy block embeds (CC) 命令,以下 quickadd 可作平替,具体控制条件略有不同。

image

基本配置参 QuickAdd JS & Templater JS 简介及相互修改“QuickAdd Capture 加载内部代码”。

js quickadd 代码,点击展开
let customRandom = (alphabet, size)=> {
  let mask = (2 << Math.log(alphabet.length-1) / Math.LN2)-1, step = -~(1.6 * mask * size / alphabet.length)
  , id = '', bytes = crypto.getRandomValues(new Uint8Array(step)), j = step
  while (j--) { id += alphabet[bytes[j] & mask] || ''; if (id.length === size) return id }
}, Editor = app.workspace.activeEditor.editor, line = Editor.getCursor().line, str = Editor.getLine(line)
, rgx = / \^[a-z0-9]{6,}$/gm, ids = Editor.getValue().match(rgx) || []
, newID = ` ^${customRandom('abcdefghijklmnopqrstuvwz0123456789', 6)}`
, set = Array.from(new Set(ids.sort().filter((x, i)=> x == ids[i+1]).map(x=> x)))
if (set[0]) { new Notice(`重复项${set}`); navigator.clipboard.writeText(set) }
if (!str.match(rgx) && !ids.includes(newID)) { ids.push(newID)
  Editor.replaceRange(newID, {line: line, ch: str.length}) }

因为不是每次生成块引用都需要立刻复制,为避免污染剪贴板,代码并不默认复制块引用。若希望默认复制,可自行在合适位置加上:

navigator.clipboard.writeText(`[[${app.workspace.getActiveFile().basename}#^${newID.slice(2)}]]`)
1 个赞

所以请问你知道怎么自动化了吗 :pray: