通过capture快速添加一个新任务
org capture mode取代了 remember mode 用来捕获任务以及备忘录。
为使得添加任务更加有效率,我定义了最少的capture模板,曾经我预定义了很多capture模板, 甚至每个org文件都定义一个模板。我通过绑定的快捷键 C-c c
来启动org-capture功能,然后 选择一个合适的模板,并且将捕获的内容写进合适的文件的 * Tasks
分类下面。
我发现我还得将这些capture的任务写入到不同的org文件的不同位置,因此定义这么多capture 模板根本没法帮助我。因此我修改了原来的工作流,使用最少的capture模板–这样我创建任务将会非常快 并且只要重新提取到特定文件一次。当然这样也节省了我维护我org-capture模板的时间,尤其当需要新加 org文件时候。
1.1 capture 模板
当需要添加一个新任务时候,我会将新任务归入如下几类模板中的一种:
-
要回个电话(p)
-
要开个会(m)
-
要回个邮件(r)
-
添加新任务(t)
-
添加新备忘(n)
-
突发事情(j)
-
新兴趣(h)
然后再选择相应模板。
如下是我的capture 模板的配置:
#+header: :tangle yes
#+begin_src emacs-lisp
(setq org-directory "~/git/org")
(setq org-default-notes-file "~/git/org/refile.org")
;; I use C-c c to start capture mode
(global-set-key (kbd "C-c c") 'org-capture)
;; Capture templates for: TODO tasks, Notes, appointments, phone calls, meetings, and org-protocol
(setq org-capture-templates
(quote (("t" "todo" entry (file "~/git/org/refile.org")
"* TODO %?\n%U\n%a\n" :clock-in t :clock-resume t)
("r" "respond" entry (file "~/git/org/refile.org")
"* NEXT Respond to %:from on %:subject\nSCHEDULED: %t\n%U\n%a\n" :clock-in t :clock-resume t :immediate-finish t)
("n" "note" entry (file "~/git/org/refile.org")
"* %? :NOTE:\n%U\n%a\n" :clock-in t :clock-resume t)
("j" "Journal" entry (file+datetree "~/git/org/diary.org")
"* %?\n%U\n" :clock-in t :clock-resume t)
("w" "org-protocol" entry (file "~/git/org/refile.org")
"* TODO Review %c\n%U\n" :immediate-finish t)
("m" "Meeting" entry (file "~/git/org/refile.org")
"* MEETING with %? :MEETING:\n%U" :clock-in t :clock-resume t)
("p" "Phone call" entry (file "~/git/org/refile.org")
"* PHONE %? :PHONE:\n%U" :clock-in t :clock-resume t)
("h" "Habit" entry (file "~/git/org/refile.org")
"* NEXT %?\n%U\n%a\nSCHEDULED: %(format-time-string \"%<<%Y-%m-%d %a .+1d/3d>>\")\n:PROPERTIES:\n:STYLE: habit\n:REPEAT_TO_STATE: NEXT\n:END:\n"))))
#+end_src
capture mode能够对新建任务自动处理计时与终止计时。该功能是capture自带功能并不需要新添加 代码来实现该功能。当我启动capture mode创建的任务,任务通过指定 :clock-in t
就可以自动开始计时,当任务通过快捷键 C-c C-c
将任务写入文件时候,会重新从原来计时的任务开始计时。
通过capture mode创建的那种快速完成的计时任务,当短时间结束时(通常少于1分钟) 会在我的任务里边 产生一个空的计时抽屉,而这个空的计时抽屉不是特别有用。因此我会将如下计时抽屉删除掉。
#+begin_src org :exports src
,* TODO New Capture Task
:LOGBOOK:
:END:
[2010-05-08 Sat 13:53]
#+end_src
我使用如下自定义的函数来移除这些在 LOGBOOK
生成的空的计时日志。
#+header: :tangle yes
#+begin_src emacs-lisp
;; Remove empty LOGBOOK drawers on clock out
(defun bh/remove-empty-drawer-on-clock-out ()
(interactive)
(save-excursion
(beginning-of-line 0)
(org-remove-empty-drawer-at "LOGBOOK" (point))))
(add-hook 'org-clock-out-hook 'bh/remove-empty-drawer-on-clock-out 'append)
#+end_src
1.2 多个capture任务文件
我只使用一个org 文件来作为我capture模板的目标文件。
我会在这个命名为 refine.org
文件中存备忘,任务,回电以及org-protocol相关的任务. 曾经也用过多个文件,但是 发现多个文件并没有什么优势。
通常这个文件是空的,除了第一行创建了 REFILE
标签。
这个文件唯一的一行永久存在的内容如下:
#+begin_src org :exports src
,#+FILETAGS: REFILE
#+end_src
1.3 capture任务需要快速创建
好了, 当我正在做些事情时候-我需要记住它。我不想停下手上的事。我可能在孵化一个项目, 通常我不希望脱离当前聚焦的事情,但是同时我又不想错过新来的的事情。
这时我该怎么办?通过 C-c c
启动capture mode然后选择 t
,然后我的buffer中会产 生一个如下格式的任务:
#+begin_src org :exports src
,* TODO
[2010-08-05 Thu 21:06]
[[file:~/git/org-mode-doc/org-mode.org::*Capture%20Tasks%20is%20all%20about%20being%20FAST][Capture Tasks is all about being FAST]]
#+end_src
在新生成的TODO任务中写入新来的任务细节,然后 C-c C-c
这条任务就会写入refile.org文件。然后我就可以继续当前手上工作,同时之前任务也不会丢失,我此时也不必花精力去考虑新来的任务。
对于capture任务note更新时间会记录下来。capture模板自动设置计时以及停止计时。这对突然的 打断以及回电话非常有用。
2 重定向任务
重定向任务很简单。当我的refile.org文件中通过capture mode积累了一堆任务之后。我需要将这些任务移动到正确的org文件的合适分类中。我所有的在用的org文件都通过 org-agenda-files
变量定义,都可以在agenda中显示。
我有时候会在refile.org文件中累积长达1周的capture任务。在agenda 视图中显示出来的当日任务,我通常当天就重定向到其他文件中。我喜欢 保持重定向任务列表是空的。
2.1 重定向任务设置
为重定向任务到新的org文件中,你需要知道这些任务应该重定向到哪里。
我的设置中,会将 org-agenda-files
定义的文件以及当前文件作为重定向的目标。
我现在使用IDO来完成目标查找。我发现IDO处理起来比之前的设置更加快。刚开始我并不喜欢IDO, 但是当看了些相关的文档后,了解到 C-SPEC
可以限制目标搜搜数量,我发现它比我之前设置好 用多了。现在,当我想重定向refile文件中的任务时候,我只需要执行快捷键 C-c C-w
启动重定向流程, 然后输入一些匹配字段,然后执行 C-SPC
限制到匹配到当前列表,然后继续查找其他目标。 C-j
可以选择 当前的作为目标。我喜欢这样。我通常显示所有的目标文件大纲列表,因此我可以拥有相同的头在不同子树下 或者不同项目中,并且当重定向时也能够方便区分。
当前我会将 DONE
状态任务作为有效重定向任务。这样可以保证重定向目标合适大小。
我的重定向配置如下:
#+header: :tangle yes
#+begin_src emacs-lisp
; Targets include this file and any file contributing to the agenda - up to 9 levels deep
(setq org-refile-targets (quote ((nil :maxlevel . 9)
(org-agenda-files :maxlevel . 9))))
; Use full outline paths for refile targets - we file directly with IDO
(setq org-refile-use-outline-path t)
; Targets complete directly with IDO
(setq org-outline-path-complete-in-steps nil)
; Allow refile to create parent tasks with confirmation
(setq org-refile-allow-creating-parent-nodes (quote confirm))
; Use IDO for both buffer and file completion and ido-everywhere to t
(setq org-completion-use-ido t)
(setq ido-everywhere t)
(setq ido-max-directory-size 100000)
(ido-mode (quote both))
; Use the current window when visiting files and buffers with ido
(setq ido-default-file-method 'selected-window)
(setq ido-default-buffer-method 'selected-window)
; Use the current window for indirect buffer display
(setq org-indirect-buffer-display 'current-window)
;;;; Refile settings
; Exclude DONE state tasks from refile targets
(defun bh/verify-refile-target ()
"Exclude todo keywords with a done state from refile targets"
(not (member (nth 2 (org-heading-components)) org-done-keywords)))
(setq org-refile-target-verify-function 'bh/verify-refile-target)
#+end_src
为了将任务重定向到 norang.org
文件,我通常将光标移到需要重定向的任务上,然后执行 C-c C-w
,然后执行 nor C-SPC sys RET
就可以完成了。IDO 补全模式让定位目标非常方便。
2.2 重定向任务
需要重定向的任务都在agenda的特定块中。为快速找到需要重定向的任务,我先通过 F12 SPC
打开 agenda视图,然后滚动到第二节: Tasks to Refile
. 该视图中显示所有的任务(即使有些任务已经 被标记为=donw=状态)
在agenda中批量将任务重定向到相同位置也是非常方便。只要列出所有需要批量重定向任务,然后通过 m
标记这些任务,最后执行 B r
将会将所有标记的task重定向到新的目标。通常,我也会通过执行 C-2 C-c C-w
重定向当前任务作为当前计时任务的子任务.
执行重定向耗时通常在1分钟以内,因此我每天都会重定向好几次。
2.3 重定向备忘
我通常在大部分org 文件中保留 * Notes
类型。备忘通常通过capture模板创建,同时会 给任务加上 NOTE
标签,由于有标签,所以方便通过agenda在不同文件快速查找。
备忘首先会创建在 refile.org
文件中,然后通过重定向功能重定向到合适项目文件中。有些项目 相关备忘会重定向到相应的项目任务下面,而非 * NOTES
大纲中。这种备忘通常只和该项目相关, 通常项目结束后就没太大用处了–当归档项目时候,删除这些备忘也没什么关系。
2.4 重定向回电以及会议
回电以及会议任务也是通过capture mode来创建的。在通过capture mode 模板创建这种任务时 会启动计时,当回电完成或者会议结束,计时也会结束。
回电以及会议任务也是生成到 refile.org
中,然后通过重定向功能定向到合适的位置。有些是项目相关的回电,我们也希望在合适的分类中跟踪。我会重定向回电以及会议任务到合适 项目中,这样跟踪以及报告会更加精确。
更多资讯,可以关注如下微信公众号: