Emacs的org-mode[agenda view]

假设你已经有了一个或多个带有TODO项目的org文件了,里面不少TODO项目还打上了DEADLINE或SCHEDULED时间戳。你打算怎么观赏它?怎么从一大堆项目中找到今天要处理的事情?打开所有的节点搜索?还是创建时按时间顺序排列?

都不需要,用agenda view就够了。这是一种视图,所谓视图,在我看来就是展示数据的方式。

agenda view就是要把你的数据,按时间来排列分割,然后展示给你看的。在你打开Emacs的任何时候,可以用(C-c a a)来打开agenda view。它的效果如图:

agendaview

以图中23日的日程来看。它的数据展示规则是这样的。

第一部分是一个按时间分割的列表,它并不是每一天都有的,只有你当天的项目除了日期之外还定义了时间的情况下,它才会出现,并以两个时为间隔,将你的项目插入其中。而没有定义具体时间的当天项目,则在之后排队显示。

第二部分,没有具体时间的项目。第一列是TODO项目所在的org文件名,我这里有home,work,linux三个文件。第二列,显示这个项目是被分配在今天,还是在今天到期。Scheduled就是设置在今天的工作项,而Deadline就是指该项目在今天到期。而”In 2 d.”则表示这一项目在两天后到期。之后是描述。如果你的项目有tags的话,它将会在最后一列显示。

agenda view提供四种视图,分别是日(d),周(w),月(v m),年(v y),括号里是切换这四种视图的快捷键。用哪种视图纯属个人喜好,我觉得一方面是看你每天的日程多不多,另一方面可以取决于你在什么样的高度查看你的日程。

tags与情境

情境(context),在时间管理的概念中就是按所处的环境来分割TODO项目。比如说某些事是在网络上做的,某些事是在公司做的,某些事是在家里做的。

当然你可以把不同的情境分别放在不同的文件里。不过如果情境比文件的粒度要小,比如说你在家里有三个情境,”厕上””床上””电脑前”,而这些情境都属于“home”,你无须创建三个文件,而可以将它们全部放在home.org中,然后分别打上不同的标签。打标签的命令可以用(C-c C-q)。

之后如果你要做床上的事,可以敲(C-c a m),按提示输入标签,就可以显示所有符合条件的项目。

(C-c a)是打开agenda view的命令,而后面的m a可以看作是参数,用于打开不同的视图。如前所见,(C-c a a)是一种日历式的视图。(C-c a m)是一种可以指定Tags显示的视图。当然还有很多,按(C-c a)之后,界面上会有提示。

要做了以上这些事情,你还需要做一个配置,目的是要让agenda view知道,它应该从哪些个org文件里面取数据。

在你的.emacs文件中,添加:

(setq org-agenda-files (list "~/doc/org/linux.org"
                  "~/doc/org/work.org"
                  "~/doc/org/home.org"))