這是 Emacs 和 Org 模式系列的第三篇。
當你使用 Org 模式來跟進你的 TODO 時,它有多種狀態。你可以用 C-c C-t
來快速切換狀態。我將它設為這樣:
(setq org-todo-keywords '( (sequence "TODO(t!)" "NEXT(n!)" "STARTED(a!)" "WAIT(w@/!)" "OTHERS(o!)" "|" "DONE(d)" "CANCELLED(c)")))
在這裡,我設定了一個任務未完成的五種狀態:TODO
、NEXT
、STARTED
、WAIT
及 OTHERS
。每一個狀態都有單個字的快捷鍵(t
、n
、a
等)。管道符(|
)之後的狀態被認為是“完成”的狀態。我有兩個“完成”狀態:DONE
(已經完成)及 CANCELLED
(還沒完成,但由於其它的原因無法完成)。
!
的含義是記錄某項更改為狀態的時間。我不把這個新增到完成的狀態,是因為它們已經被記錄了。@
符號表示帶理由的提示,所以當切換到 WAIT
時,Org 模式會問我為什麼,並將這個新增到筆記中。
以下是專案狀態發生變化的例子:
** DONE This is a test CLOSED: [2018-03-02 Fri 03:05] - State "DONE" from "WAIT" [2018-03-02 Fri 03:05] - State "WAIT" from "TODO" [2018-03-02 Fri 03:05] \\ waiting for pigs to fly - State "TODO" from "NEXT" [2018-03-02 Fri 03:05] - State "NEXT" from "TODO" [2018-03-02 Fri 03:05]
在這裡,最新的專案在最上面。
當你處在一個待辦事項時,C-c C-s
或 C-c C-d
可以為其設定相應的日程或期限。這些都是在議程模式中的功能。它們的區別在於其意圖和表現。日程是你希望在某個時候完成的事情,而期限是在某個特定的時間應該完成的事情。預設情況下,議程檢視將在專案的截止日期前提醒你。
在此過程中,議程檢視將顯示即將出現的專案,提供了一種基於純文字或標記搜尋專案的方法,甚至可以進行跨多個檔案處理專案的批次操作。我在本系列的中介紹了為議程模式設定。
Org 模式當然也支援標籤了。你可以通過 C-c C-q
快速的建立標籤。
你可能會想為一些常用的標籤設定快捷鍵。就像這樣:
(setq org-tag-persistent-alist '(("@phone" . ?p) ("@computer" . ?c) ("@websurfing" . ?w) ("@errands" . ?e) ("@outdoors" . ?o) ("MIT" . ?m) ("BIGROCK" . ?b) ("CONTACTS" . ?C) ("INBOX" . ?i) ))
你還可以按檔案向該列表新增標記,也可以按檔案為某些內容設定標記。我就在我的 inbox.org
和 email.org
檔案中設定了一個 INBOX
的標籤。然後我可以每天從日程檢視中檢視所有標記為 INBOX
的專案,像將它們重新歸檔到其他檔案中的這樣的簡單操作將讓它們去掉 INBOX
標記。
“重新歸檔”就是在檔案中或其他地方移動。它是使用標題來完成的。C-c C-w
就是做這個的。我設定成這樣:
(setq org-outline-path-complete-in-steps nil) ; Refile in a single go(setq org-refile-use-outline-path 'file)
一段時間後,你的檔案就會被已經完成的事情弄得亂七八糟。Org 模式有一個歸檔特性,可以將主 .org
檔案移到其他檔案中,以備將來參考。如果你在 git
或其他軟體中 有 Org 檔案,你可能希望刪除這些其他檔案,因為無論如何都會在歷史中擁有這些檔案,但是我發現它們對於析取和搜尋非常方便。
我會定期檢查並歸檔檔案中的所有內容。基於 stackoverflow 的討論,我有以下程式碼:
(defun org-archive-done-tasks () (interactive) (org-map-entries (lambda () (org-archive-subtree) (setq org-map-continue-from (outline-previous-heading))) "/DONE" 'file) (org-map-entries (lambda () (org-archive-subtree) (setq org-map-continue-from (outline-previous-heading))) "/CANCELLED" 'file))
這基於一個特定的答案 —— 你可以從評論那獲得一些額外的提示。現在你可以執行 M-x org-archive-done-tasks
,當前檔案中所有標記為 DONE
或 CANCELED
的內容都將放到另一個檔案中。
我將通過討論在 Org 模式中自動接受郵件以及在不同的機器上同步來對 Org 模式進行總結。