一个有用的org-agenda-custom-commands的例子

好久没有写了,文章的开头,照例还是要吹吹水的。

自从更新了基于org-mode的待办事项的管理模式后,感觉整个人都日益神清气爽起来。究其原因,大概是因为现在处理inbox.org和安排第二天的行程的时候,有一个相对可行的操作方法可以参考了,所以每次处理这两件事情的时候,也就没有那么纠结了。同时,还因为采取了一种尽量goal-oriented的TODO管理方法,最大程度上杜绝了一些不必要的TODO被收集起来,从而也减轻了内心的焦虑感。

言归正传,这篇文章是要讲一个我自定义的org-mode的Agenda视图的command的。这条命令是下面这样子的

1
2
3
(setq org-agenda-custom-commands
'(("f" "查看TODO条目(按创建时间排序)" todo "TODO"
((org-agenda-sorting-strategy '(priority-down time-up))))))

俗话说的好,要检验自己是不是懂得某个东西,只要看看自己能不能把这个东西给别人讲清楚就可以了。如果讲清楚了,没有哪里需要emmmm的地方,那么就可以认为这个东西基本上自己是真的懂得了。

那么org-agenda-custom-commands是干嘛用的呢。官方文档的链接在这里:https://orgmode.org/worg/org-tutorials/org-custom-agenda-commands.html ——哎哟喂,其实如果你们身处在Emacs之中来看这篇文章的话,只要按下C-h v,然后在minibuffer中输入org-agenda-custom-commands的话,也就可以看到关于这个变量的说明了啦。不过上面这个文档的好处是它有附赠一些例子。

总而言之,org-agenda-custom-commands是一个变量,通过给这个变量赋值,可以在org-mode的Agenda视图中,添加一些自定义的功能及对应的快捷键。例如,如果在Emacs中求值我上面所给的Elisp代码,然后按下C-c a,便会看到类似于下面这样的提示

这时候,如果按下f键,Emacs就会按照上面代码中描述的那样找出所有关键字为TODO的条目,然后按照【先优先级降序,然后时间戳升序】的方式来排列它们。在我的电脑上的效果如下图所示

可以看到,首先出现的条目是标注为最高的A优先级的两条,然后是在heading内容的开头含有时间戳的条目。

对我来说,这样的一个好处是可以将未处理过的TODO按照时间顺序列出来,从而避免了所有的TODO条目先是按照文件的名称集中起来,然后又按照它们在文件中的顺序从上往下地排列起来。毕竟文件内的TODO都是聚合在各自不同的更高级的heading之下的,它们之间的上下关系体现不出什么东西。