Org-mode, 用文本文件管理日常(三)

13 篇文章 0 订阅
本文介绍了如何利用Emacs的Org-mode通过capture快速添加任务和备忘,包括capture模板的设置、多任务文件的管理以及如何重定向任务到正确的位置。Org-mode的capture模式简化了任务创建流程,并提供了计时功能。通过重定向任务,可以确保它们被正确地分类到对应的org文件中,提高工作效率。
摘要由CSDN通过智能技术生成

通过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 中,然后通过重定向功能定向到合适的位置。有些是项目相关的回电,我们也希望在合适的分类中跟踪。我会重定向回电以及会议任务到合适 项目中,这样跟踪以及报告会更加精确。

更多资讯,可以关注如下微信公众号:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值