welcome to my blog


统计信息
  • 文章总数:7
分类信息1

org-mode之TODO列表 emacs org-mode 字数:413

1 TODO列表

1.1 基本用法

TODO列表对我们日常工作帮助很大,可以方便的记录待办事项,并且跟踪没一件 事的工作状态,让我们可以轻松的创建工作计划,并且帮助自己管理好时间,还 可以通过Agenda生成工作报告……绝对值得一学。使用TODO的方法非常简单,下面 是基本的TODO列表操作的快捷键:

# 为标题添加TODO
C-c C-t
# 显示所有标记TODO的标题,折叠这些标题的内容
C-c / t
# 显示全局TODO列表,会从所有的Agenda File中手机TODO信息,统计到一个Buffer中
C-c a t

1.2 多状态工作流

可以通过配置TODO支持的关键字让TODO列表维护更多的工作状态。在Emacs配置文 件中加入如下代码:

(setq org-todo-keywords
'((sequence "TODO" "STARTED" "WAITING" "|" "DONE" "CANCELLED")))

配置中出现的“|”是分隔待办事项和已完成事项的,配置好后可以通过快捷键测试 一下,输入 C-c C-t 会发现状态按照如下顺序转换:

TODO->STARTED->WAITING->DONE->CANCELLED->TODO

虽然不断的按C-c C-t可以循环的达到不同的状态,但是还不够高效,能够直接选 择需要使用的状态才比较高效,org-mode同样提供了实现这种操作的方式:

(setq org-todo-keywords
'((sequence "TODO(t)" "|" "DONE(d)")
(sequence "REPORT(r)" "BUG(b)" "KNOWNCAUSE(k)" "|" "FIXED(f)")
(sequence "|" "CANCELED(c)")))

每一个关键字后面括号中的字母就代表了直接到达该状态的快捷键,如我们输入 C-c C-t t 就会直接把待办事项标记为TODO状态。上面的代码同样教会了我们 如何定义多个工作流,比如第一个sequence定义了TODO/DONE而第二个sequence 定义了Bugfix的流程。定义状态不仅可以在配置文件中定义,也可以在文章的任 意地方定义,只需要在文章中加入如下声明就可以定义了:

#+TODO: TODO(t) | DONE(d)
#+TODO: REPORT(r) BUG(b) KNOWNCAUSE(k) | FIXED(f)
#+TODO: | CANCELED(c)

和上面在配置文件中实现的效果一样。

1.3 进度日志

Org mode能够自动的记录状态变化的时间戳和提示信息,最基础的日志记录就是 当任务从TODO到达结束状态时通过如下代码记录时间和提示信息:

# 记录时间
(setq org-log-done 'time)
# 记录提示信息
(setq org-log-done 'note)

我们可以配置org mode使其能够自动跟踪任务的状态,如果任务改变,就记录时 间戳或者提示信息,这需要对每一个状态重新进行定义了,其实也很简单,只需 要‘!’ (for timestamp)和‘@’(for a note)例如我们为在多状态流小节使用 的例子配置跟中功能,就需要像下面这样重新定义:

(setq org-todo-keywords
'((sequence "TODO(t)" "STARTED" "WAITING(w@/!" "|" "DONE(d!)" "CANCELLED(c@)")))

这样当状态转变为WAITING时就会在任务下方显示timestamp和note了,同样如果 状态变为DONE就只显示timestamp,变为CANCELLED就只显示note。在添加note时 可以让org mode单独打开一个buffer用来编写note,然后输入完后按C-c C-c就 可以提交note了,不过需要加入如下设置:

;; Save clock data and notes in the LOGBOOK drawer
(setq org-clock-into-drawer t)

1.4 优先级任务

TODO列表可以为不同的任务指定优先级,只需要在状态后面加入[#A]就可以把这 个任务指定为高优先级的了。常用的优先级有A、B、C三种,A最高,B其次(默 认),C最低。指定了优先级以后会在Agenda中区分。

TODO [#A] Do Something

1.5 拆分任务

当任务很大时我们可以细化拆分任务,在org mode中有两种方式拆分任务,一种 是像写文章一样拆分成树状,另外一种就是Checkbox。下面分别介绍这两种:

  1. 树状结构可以在大任务后面加入[/]或者[%]这样就可以显示分数或者百分比的 进度了,每次子任务状态的变化都会触发进度的更新。树状结构如下所示:

    tree-mode


  2. Checkbox 在子任务前添加 - [ ] 标签就可以实现Checkbox了,每次Checkbox更新父 任务的状态就会更新,操作Checkbox的快捷键如下:
    C-c C-c 选中或取消Checkbox
    M-S-RET 添加一个新的Checkbox在当前级别
    

    有图有真相:

    Checkbox

comments powered by Disqus

Zhiyong Ma
ccdevote@gmail.com
github.com/ccdevote
顶部