忙成狗,闲成猪。 上半年我的状态就是如此,为了做出改变我找了很多的任务管理工具,比如奇妙清单、滴答清单(现在我还在用)等等,但是依然没有满足我的需求。作为一名精力旺盛的开发仔,我甚至一度有了自己撸一个满足自己需求的时间管理工具的想法,最后也草草了之。
但作为当代新青年,怎么能没有一个时间管理工具呢?于是乎,通过我的同事、领导兼好朋友寻找到了 Emacs 的 Org Mode 大法,是真香,接下来,我就说一说我是如何通过 Org Mode 来管理时间的。
Emacs 的下载与配置
首先,我们需要下载并安装 Emacs。
apt install software-properties-common
add-apt-repository ppa:kelleyk/emacs
apt update
apt install emacs26
复制代码
这时候我们就能够通过 Emacs 打开 .org
文件来进行时间管理了,就像这样:
Great,我们已经完成了第一步,接下来,我个人比较懒,不想用裸奔的 Emacs,于是我入坑了 Spacemacs,这样就可以帮我们配置好一个够用的 Emacs 了。
git clone https://github.com/syl20bnr/spacemacs ~/.emacs.d
复制代码
文件下载完成后,即可运行 Emacs,然后根据初始化流程进行初始化,安装完成后,我们重新打开刚刚的文件。
接下来,我们正式开始时间管理教学。
给任务挪个窝
我们需要将任务拆分成我们需要的样子,比如,我的任务列表长这样:
我们需要将我们的工作,分成不同的模块进行管理,这里都是工作相关的内容,我并没有用 Emacs 管理生活,谁记录生活用电脑啊?我会么?我不会,你会么 ?哪个正经人用电脑记录生活啊。因为工作的电脑相关度非常高,所以我才选用了 Emacs,毕竟生活谁也不会天天呆在电脑旁边。
制定工作流
我们将任务安排好了之后,就需要制定工作流了,从 TODO
到 DONE
的一套流程。
每一行都可以有不同的状态,比如 未开始
、进行中
、已完成
等等,可以根据自己的需求来定义,那我们要如何进行定义呢?
我们需要打开用户目录下的 .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
,然后按对应的键就可以进行任务状态的标记了,就像下面这样。
安排任务时间
接下来,我们需要安排任务到指定的日期,使用快捷键 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
选择查看当前周的任务情况。
同时我们在对应的天按 d
即可进入对应天的情况。
任务计时
有了 Agenda 之后,我们就能够完成时间管理了,但是想记录每个任务花了多少时间,那么就可以使用 Org Clock
进行时间记录。
我们将光标移动到想要进行时间记录的任务上,然后按 Ctrl c + Ctrl x + Ctrl i
就能够进行任务开始时间的记录了。
然后,当任务完成时,或者当任务需要暂定时,我们就可以用 Ctrl c + Ctrl x + Ctrl o
进行记录。
可以看到我们的任务的时间花费已经记录好了,并且这个时间记录可以多次开始和结束。
时间报告
刚刚我们已经在每个任务的开始和结束时打了时间戳,那我们就可以很方便的生成一个时间花费的报表。
我们进入到刚刚的 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
看到任务日志长这样子:
参考资料
非常感谢您的阅读,欢迎关注、转发、分享支持我。
来源:oschina
链接:https://my.oschina.net/u/4347428/blog/4289723