邂逅番茄工作法,觉得是一种可操作性很强的时间管理方法,如何用Emacs来实现呢?

首先要说的是,我不太喜欢非常详尽的时间管理方法,譬如用Org-mode来做时间管理,因为

  1. 过于复杂,难以坚持。
  2. 客观世界是复杂的,不可控因素很多,难用简单的模型来描述。
  3. 学习成本高。
  4. list排的满满的不见得高效,特别是对于创造性的工作。
  5. 过于精确,为管理而管理。

但番茄工作法不同,它用一句话描述就是:工作25分钟(即1个「番茄时间」),休息5分钟,再继续工作1个番茄时间;每4个番茄时间休息半小时;如果被打扰,重新开始。实践番茄工作法可以从简单的使用定时器开始。电脑上默认没有手机那样的定时器,所以用Emacs写了两个函数来实现:

1
2
3
4
5
6
7
8
9
10
11
12
(defun ding-ding-ding ()
"Ding whatever the settings are."
(interactive)
(require 'cl-macs)
(let ((ring-bell-function nil)
(visible-bell nil))
(loop repeat 100 do (ding) (other-frame 0) (sit-for 1))))

(defun my-pomodoro ()
"Ding after a pomodoro time"
(interactive)
(run-at-time "25 min" nil 'ding-ding-ding))

每次开始番茄时间时运行my-pomodoro (即M-x my-pomodoro),然后努力工作,时间到了Emacs会用铃声和弹窗口提示。用C-g取消提示,休息后,再开始下一个番茄时间。