请教各位一个问题,能否将已经记录的内容以时间线的维度来查看?

又到了年底写总结的时候,每次在这个时候总会有这么一个想法。 平时是用org mode来记录工作内容和任务。根据项目记在不同的项目条目下,现在想以时间线的维度来查看这一年来都做了些什么,不知道大家有什么建议。如果可行的话,想在明年进行尝试,我想前提应该是在每个任务或记录的地方加上时间戳,现在还没有,只有一部分有schedule和deadine.

具体怎么查看,现在到真没想好,理想状态中大概是这个样子:

还请各位提出建议,谢谢

我有类似的需求,不过我是用 org-agenda, 每次写总结的时候,就打开一年的 agenda,然后看哪些值得写进去吹牛逼。

我用 inotifywait 写了一个脚本用 git 来监控所有的 org 文件。每次修改并保存 org 文件后自动创建一个 commit,这样一段时间后可以直接用 git log 来“以时间线的维度”来查看。

这样可以使用 git 的查询机制而不是 org 自己的查询机制(我觉得前者更加完善),并且可以保留几乎所有的修改记录。

1 个赞

我是会用org agenda的daily view或者monthly view中,按"-"(减号,doom emacs好像调用的是org-agenda-manipulate-query-subtract),会将inactive timestamp条目显示出来,基本能实现想了解哪天做了、记了什么。

2 个赞

好思路,不过这样每次保存都有一条commit,每天都有好多个commit吧,一年下来更多,后面看的时候一个个commit看?

可以写段代码,解析出每块org的时间,然后按照需求重新组织一下文档。

这是个好方法。虽然离我想要的还有一段距离,的确是一种变通的候选

org-journal 是按时间记录的

我实现的是,如果要创建的 commit 距离上一个 commit 的时间在 5 分钟之内,就 amend 成一个 commit;这样即使不停地编辑很久也只会有一个 commit。现在我用了 6 个月的 org 一共有大概 1500 个提交。

查看历史用 git log --patch --since '2021-11-03 00:00' --until '2021-11-04 00:00' 一次看完一天的。

1 个赞

这个方法的话,就只有时间线这一个维度。平时大部分时间其实还是希望在项目的这个维度的,也就是我1楼图中左边那样。时间的维度只是在需要时查看一下。

  • 这个自定义函数怎么样,往 org-journal 中插入 org-link, 更加通用,只要是 emacs 内的操作都可以记录到时间线上
(defun insert-link-to-journal ()
  (interactive)
  (let ((link (org-store-link nil)))
    (org-journal-new-entry nil)
    (insert link)))

org-roam-daily

1 个赞

用 org-agenda 配合 org-capture 将工作内容都记录到 Work.org,然后把一年的找出来看看哪些可以吹

利用org的archive功能也许可以?
(setq org-archive-location "%s_archive::datetree/* Archived Tasks") 这样archive的时候就会把headline导出为以日期编号的headline的subtree,和你的要求比较像。 org-archive-location也支持别的格式,建议看下内置的帮助。

另外如果你想在capture的时候就附加一个日期的heading,改一下org-capture-templates 就行,例如

  (setq org-capture-templates
		'(("t" "Todo" entry (file+datetree "/path/to/todo.org")
		   "* TODO %?\n%U\n")))
1 个赞

目前个人认为最佳方案。 因为我没有使用org-joural这个插件。我有一个capture template有类似的功能,而且可以计时,似乎也能完成,准备实践下。

但有一个缺点,拿1楼的例子,假设我11月15日在joural或时间线的org(图中的右侧)里记录了开会这个事情,并与我任务org(左侧)关联,链接的应该是会议记录这条,这样“会议纪录”这个条目与任务一的层次关系就没有了。似乎只有点击链接跳转看了。

我相信这个能实现,就是感觉有点重。实现的效果和11楼似乎差不多。

archive的功能对我来讲有一点不适合。

  1. 通常一个项目拆分成多个任务时,通常只会在项目完成时archive整个项目,这样时间只有一个,而过程中各个任务的时间就无法在时间线上显示。
  2. 如果每完成一个任务就archive的话,原来项目的层次结构在archive后就没了。

capture是一个好办法,然后再用链接和原来的任务连起来。