Org Mode - 年輕人的第一堂時間管理課程

忙成狗,閒成豬。 上半年個人狀態就是如此,爲了作出改變我找了不少的任務管理工具,好比奇妙清單、滴答清單(如今我還在用)等等,可是依然沒有知足個人需求。做爲一名精力旺盛的開發仔,我甚至一度有了本身擼一個知足本身需求的時間管理工具的想法,最後也草草了之。git

但做爲當代新青年,怎麼能沒有一個時間管理工具呢?因而乎,經過個人同事、領導兼好朋友尋找到了 Emacs 的 Org Mode 大法,是真香,接下來,我就說一說我是如何經過 Org Mode 來管理時間的。github

Emacs 的下載與配置

首先,咱們須要下載並安裝 Emacs。bash

apt install software-properties-common
add-apt-repository ppa:kelleyk/emacs
apt update
apt install emacs26

這時候咱們就可以經過 Emacs 打開 .org 文件來進行時間管理了,就像這樣:工具

init.png

Great,咱們已經完成了第一步,接下來,我我的比較懶,不想用裸奔的 Emacs,因而我入坑了 Spacemacs,這樣就能夠幫咱們配置好一個夠用的 Emacs 了。spa

git clone https://github.com/syl20bnr/spacemacs ~/.emacs.d

文件下載完成後,便可運行 Emacs,而後根據初始化流程進行初始化,安裝完成後,咱們從新打開剛剛的文件。3d

spacemacs.png

接下來,咱們正式開始時間管理教學。日誌

給任務挪個窩

咱們須要將任務拆分紅咱們須要的樣子,好比,個人任務列表長這樣:code

tasks.png

咱們須要將咱們的工做,分紅不一樣的模塊進行管理,這裏都是工做相關的內容,我並無用 Emacs 管理生活,誰記錄生活用電腦啊?我會麼?我不會,你會麼 ?哪一個正經人用電腦記錄生活啊。由於工做的電腦相關度很是高,因此我才選用了 Emacs,畢竟生活誰也不會每天呆在電腦旁邊。blog

制定工做流

咱們將任務安排好了以後,就須要制定工做流了,從 TODODONE 的一套流程。ci

每一行均可以有不一樣的狀態,好比 未開始進行中已完成 等等,能夠根據本身的需求來定義,那咱們要如何進行定義呢?

咱們須要打開用戶目錄下的 .spacemacs 配置文件,在裏面添加流程配置而且加上顏色、背景色樣式的配置。

;; 設置任務流程(這是個人配置)
(setq org-todo-keywords
      '((sequence "未開始(p!)" "進行中(t!)" "阻塞中(s!)" "|" "已完成(d!)" "已取消(a@/!)")))

;; 設置任務樣式
(setq org-todo-keyword-faces
   '(("未開始" .   (:foreground "red" :weight bold))
    ("阻塞中" .   (:foreground "red" :weight bold))
    ("進行中" .      (:foreground "orange" :weight bold))
    ("已完成" .      (:foreground "green" :weight bold))
    ("已取消" .     (:background "gray" :foreground "black"))
))

咱們可使用快捷鍵 Ctrl c + Ctrl t ,而後按對應的鍵就能夠進行任務狀態的標記了,就像下面這樣。

tagstask.png

安排任務時間

接下來,咱們須要安排任務到指定的日期,使用快捷鍵 Ctrl c + Ctrl s 就能夠安排對應任務的時間了(同時,還支持循環任務等複雜時間設置)。

單獨這麼安排,你們可能看不出什麼,咱們須要 Org Agenda 來配合食用。

咱們須要給它設置一個快捷鍵,而且將剛剛的文件加入到日程列表裏(在 .spacemacs 配置):

;; 設置 Org Agenda 快捷鍵
(global-set-key (kbd "C-c a") 'org-agenda)

;; 加入到日程列表裏
(setq org-agenda-files (list "~/org-mode/111.org"))

咱們用 Ctrl c + a 快捷鍵便可打開 Agenda,咱們按 a 選擇查看當前周的任務狀況。

agenda.png

同時咱們在對應的天按 d 便可進入對應天的狀況。

任務計時

有了 Agenda 以後,咱們就可以完成時間管理了,可是想記錄每一個任務花了多少時間,那麼就可使用 Org Clock 進行時間記錄。

咱們將光標移動到想要進行時間記錄的任務上,而後按 Ctrl c + Ctrl x + Ctrl i 就可以進行任務開始時間的記錄了。

clockin.png

而後,當任務完成時,或者當任務須要暫定時,咱們就能夠用 Ctrl c + Ctrl x + Ctrl o 進行記錄。

clockout.png

能夠看到咱們的任務的時間花費已經記錄好了,而且這個時間記錄能夠屢次開始和結束。

時間報告

剛剛咱們已經在每一個任務的開始和結束時打了時間戳,那咱們就能夠很方便的生成一個時間花費的報表。

咱們進入到剛剛的 Agenda 界面,而後按下 v + R 就能夠獲得時間報告了。

這樣就能夠能夠看到在任務上花費的時間統計報告了,同時咱們也能在 Agenda 裏看到成天的任務計時狀況,咱們在配置文件中加上下面的配置:

;; agenda 裏面時間塊彩色顯示
;; From: https://emacs-china.org/t/org-agenda/8679/3
(defun ljg/org-agenda-time-grid-spacing ()
  "Set different line spacing w.r.t. time duration."
  (save-excursion
    (let* ((background (alist-get 'background-mode (frame-parameters)))
           (background-dark-p (string= background "dark"))
           (colors (list "#1ABC9C" "#2ECC71" "#3498DB" "#9966ff"))
           pos
           duration)
      (nconc colors colors)
      (goto-char (point-min))
      (while (setq pos (next-single-property-change (point) 'duration))
        (goto-char pos)
        (when (and (not (equal pos (point-at-eol)))
                   (setq duration (org-get-at-bol 'duration)))
          (let ((line-height (if (< duration 30) 1.0 (+ 0.5 (/ duration 60))))
                (ov (make-overlay (point-at-bol) (1+ (point-at-eol)))))
            (overlay-put ov 'face `(:background ,(car colors)
                                                :foreground
                                                ,(if background-dark-p "black" "white")))
            (setq colors (cdr colors))
            (overlay-put ov 'line-height line-height)
            (overlay-put ov 'line-spacing (1- line-height))))))))

(add-hook 'org-agenda-finalize-hook #'ljg/org-agenda-time-grid-spacing)

這樣咱們就在 Agenda 經過 v + l 看到任務日誌長這樣子:

agendablock.png

參考資料

  1. 神器 Org-mode
  2. Orgmode for GTD

很是感謝您的閱讀,歡迎關注、轉發、分享支持我。

二維碼.png

相關文章
相關標籤/搜索