使用org-mode來GTD(1)— 入門
GTD(Getting Things Done)是美國的商業(yè)顧問David Allen提倡的一種提高生產(chǎn)效率的時間管理系統(tǒng)。利用GTD可以緩解壓力,專心地工作,學習。詳細可以參考他的兩部書《盡管去做:無壓工作的藝術(shù)》,《結(jié)果第一:平衡工作和生活的52條原則》。
Org-Mode是為Emacs編寫的個人信息管理以及編寫大綱的工具。因為Emacs強大的特性,用其來實踐GTD系統(tǒng)是再方便不過的了。這里我將介紹一些org-mode的特性。需要深入了解的可以看這里。
org-mode的設(shè)置可以在 .emacs 中設(shè)置,也可以在 org 文件中設(shè)置。
先看看 org-mode 所需要的文件。
1 2 3 4 5 6 | ~/.emacs ~/elisp/org-mode.el ~/org/gtd.org ~/org/notes.grg ~/org/someday.org ~/org/birthday.org |
首先是在 ~/.emacs 文件中加載 org-mode.el。其中文件位于 ~/elisp/org-mode.el。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 | (load "org-mode") (custom-set-variables ;; custom-set-variables was added by Custom. ;; If you edit it by hand, you could mess it up, so be careful. ;; Your init file should contain only one such instance. ;; If there is more than one, they won't work right. '(auto-raise-tool-bar-buttons t t) '(auto-resize-tool-bars t t) '(calendar-week-start-day 1) '(case-fold-search t) '(org-agenda-files (quote ("~/org/birthday.org" "~/org/gtd.org"))) '(org-agenda-ndays 7) '(org-agenda-repeating-timestamp-show-all nil) '(org-agenda-restore-windows-after-quit t) '(org-agenda-show-all-dates t) '(org-agenda-skip-deadline-if-done t) '(org-agenda-skip-scheduled-if-done t) '(org-agenda-sorting-strategy (quote ((agenda time-up priority-down tag-up) (todo tag-up)))) '(org-agenda-start-on-weekday nil) ;; '(org-agenda-todo-ignore-deadlines t) ;; '(org-agenda-todo-ignore-scheduled t) ;; '(org-agenda-todo-ignore-with-date t) '(org-agenda-window-setup (quote other-window)) '(org-deadline-warning-days 7) '(org-export-html-style "<link rel=\"stylesheet\" type=\"text/css\" href=\"mystyles.css\">") '(org-fast-tag-selection-single-key nil) '(org-log-done (quote (done))) '(org-refile-targets (quote (("gtd.org" :maxlevel . 1) ("someday.org" :level . 1)))) '(org-reverse-note-order nil) '(org-tags-column -78) '(org-tags-match-list-sublevels nil) '(org-time-stamp-rounding-minutes 5) '(org-use-fast-todo-selection t) '(org-use-tag-inheritance nil) '(unify-8859-on-encoding-mode t nil (ucs-tables))) ;; These lines only if org-mode is not part of the X/Emacs distribution. (autoload 'org-mode "org" "Org mode" t) (autoload 'org-diary "org" "Diary entries from Org mode") (autoload 'org-agenda "org" "Multi-file agenda from Org mode" t) (autoload 'org-store-link "org" "Store a link to the current location" t) (autoload 'orgtbl-mode "org" "Org tables as a minor mode" t) (autoload 'turn-on-orgtbl "org" "Org tables as a minor mode") (add-to-list 'auto-mode-alist '("\\.org$" . org-mode)) (define-key global-map "\C-cl" 'org-store-link) (define-key global-map "\C-ca" 'org-agenda) ;(setq org-log-done nil) (setq org-log-done t) (setq org-agenda-include-diary nil) (setq org-deadline-warning-days 7) (setq org-timeline-show-empty-dates t) (setq org-insert-mode-line-in-empty-file t) (require 'org-install) (autoload 'remember "remember" nil t) (autoload 'remember-region "remember" nil t) (setq org-directory "~/org/") (setq org-default-notes-file "~/org/notes.org") (setq remember-annotation-functions '(org-remember-annotation)) (setq remember-handler-functions '(org-remember-handler)) (add-hook 'remember-mode-hook 'org-remember-apply-template) (define-key global-map "\C-cr" 'org-remember) (setq org-remember-templates '( ("Todo" ?t "* TODO %^{任務} %^g\n%?\nAdded: %U" "~/org/gtd.org" "INBOX") ("Note" ?n "\n* %U %^{筆記} %^g \n%i%?\n %a" "~/org/notes.org") )) (setq org-agenda-exporter-settings '((ps-number-of-columns 1) (ps-landscape-mode t) (htmlize-output-type 'css))) (setq org-agenda-custom-commands '( ("p" "Projects" ((tags "PROJECT"))) ("h" "Office and Home Lists" ((agenda) (tags-todo "OFFICE") (tags-todo "HOME") (tags-todo "WEB") (tags-todo "CALL") )) ("d" "Daily Action List" ( (agenda "" ((org-agenda-ndays 1) (org-agenda-sorting-strategy (quote ((agenda time-up priority-down tag-up) ))) (org-deadline-warning-days 0) )))))) (setq org-todo-keywords '((sequence "TODO" "APPT" "STARTED" "DONE"))) (defun gtd () (interactive) (find-file "~/org/gtd.org")) (global-set-key (kbd "C-c g") 'gtd) (add-hook 'org-agenda-mode-hook 'hl-line-mode) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | #+STARTUP: showall * INBOX #+CATEGORY: INBOX * Research #+CATEGORY: Research * Project A #+CATEGORY: Project A * Private #+CATEGORY: Private * Archive #+CATEGORY: Archive * org-mode configuration #+STARTUP: hidestars #+STARTUP: logdone #+PROPERTY: Effort_ALL 0:10 0:20 0:30 1:00 2:00 4:00 6:00 8:00 #+COLUMNS: %38ITEM(Details) %TAGS(Context) %7TODO(To Do) %5Effort(Time){:} %6CLOCKSUM{Total} #+PROPERTY: Effort_ALL 0 0:10 0:20 0:30 1:00 2:00 3:00 4:00 8:00 #+TAGS: { OFFICE(o) HOME(h) WEB(w) DOWNTOWN(d) CALL(c) } #+TAGS: PROJECT(p) READING(r) #+TODO: TODO(t) STARTED(s) WAITING(w) APPT(a) | DONE(d) CANCELLED(c) DEFERRED(f) |
1 2 3 4 5 6 | #+STARTUP: showall #+STARTUP: hidestars #+TAGS: OFFICE(o) RESEARCH(r) DIARY(d) BOOK(b) FILMS(f) IDEA(i) WEB(w) COMPUTER(c) * 筆記 ** [2010-02-02 星期二 18:53] 今天寫博 使用org-mode來GTD(1) :OFFICE: |
也許某天會做的事。
1 2 3 4 | #+STARTUP: showall * Someday ** 計算機升級。 ** 去馬爾代夫旅游。 |
這里記錄預先決定的日常安排。比如生日節(jié)假日。
使用Emacs的tramp1可以無縫地訪問遠程的設(shè)備。同樣也可以連接 org-mode 的文件。下面是在HOST機器上設(shè)置 org-mode 與tramp關(guān)聯(lián)的方法。
比如下面設(shè)置的地方
1 | "~/org/foo.org" |
替換為
1 | "/domain-name/org/foo.org" |
如果是 Windows 的 NTEmacs 為:
1 | "/plink:domain-name/org/foo.org" |
1. TRAMP 代表”Transparent Remote (file) Access, Multiple Protocol”,他是 Emacs 的一個用于遠程文件編輯的擴展包。用來訪問scp/ssh/smb服務器上的文件,可以做到像讀寫本地文件一樣編輯遠程的文件。