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

相关文章
相关标签/搜索