零秒精通Emacs之Org工作流的再优化

第三部分 Note

Notes用来收集灵感,日记,事件,灵感,新闻,心情等,并使用单层层级不再往下细分,同时调用“标签”做分类管理,标签的快捷键为“C-c C-q”。

这样,org-capture 只需要管理两个Headings,Notes和Plan。

;;最后只保留Note和Plan两部分。
(defun my-org-goto-last-note-headline ()
  "Move point to the last headline in file matching \"* Notes\"."
  (end-of-buffer)
  (re-search-backward "\\* Note"))

(defun my-org-goto-last-plan-headline ()
  "Move point to the last he adline in file matching \"* Plans\"."
  (end-of-buffer)
  (re-search-backward "\\* Plan"))


(setq org-capture-templates
      '(("n" "Note" entry
         (file+function "~/Documents/OrgMode/ORG/main/todo.today.org"
                        my-org-goto-last-note-headline)
         "* %i%? \n%T")
        ("p" "Plan" entry
         (file+function "~/Documents/OrgMode/ORG/main/todo.today.org"
                        my-org-goto-last-plan-headline)
         "* TODO %i%?")
        ))
;;短评, 此处原来设置的inactive timestamp没有一点儿道理.

其中Notes使用active-timestamp,则能从agenda中review当天所有的记录。 控制好冲动,不再多分其他headings,Notes下的heading不再分级。

Notes的工作流演示如下:
在Emacs上工作,突然有了想法,org-capture采集。

按键n进入capture界面,输入临时想到的内容: ,上面的函数将会自动写进今天的Notes下面。
同时在今天的agenda中也能看到这一条:

第四部分

加了当日review的Heading,写在隐藏在Notes下面,会常常懒得写。

每日的工作框架出来之后,过去的工作流程大致是这样,启动emacs后,调用ivy-switch-buffer进入todo.today.org文件。

然后用yas-snippet写入当日的模板。

几周前读了 Steve Kemp的work-log,他定义了new-day和today两个函数,分别创建模板和跳转到当日。读过之后,拍手称妙。虽然,比前面的方法,速度上没有提升。但在概念和思维过程上是质的飞跃,不再零碎到细节中。

(defun newday ()
  (interactive)
  (progn
    (find-file "~/Documents/OrgMode/Org/Master/todo.today.org")
    (goto-char (point-max))
    (insert "*" ?\s (format-time-string "%Y-%m-%d %A") ?\n
            "** Plan\n"
            "** HandsOn\n"
            "** Notes\n"
            "** Review\n"
            )))

(defun today ()
  (interactive)
  (progn
    (find-file "~/Documents/OrgMode/Org/Master/todo.today.org")
    (goto-char (point-max))
    (re-search-backward "\\* Plan")))

这样,当新的一天来临,打开emacs,Meta-x newday,用函数动作将我这新的一天,自己亲手开天辟地出来:

image

临时参阅当天的日程,M-x today

image

另外,对当日写进plan但没有执行,或者没有完成任务的管理, Steve Kemp的work-log采取的的解决方案是,全部自动取消并自动顺延到第二天的plan中。

个人感觉这个方法很笨,没有完成的任务扔在那里就行了,到agend-dispatch中去管理,任务留在原地不动,正好作为天然的时间戳。

1 个赞

您把计划写在diary里面,生成agenda视图的时候,有没有感觉延迟比较严重?我有,所以以后就只用org内置的方式。

可能会有影响。我也是写在diary.org里,没有写到emacs自带的diary(那个可能会更快)。agenda的buffer打开后就不再关闭,查看是刷新。