第五章
Table of Contents
- 1 Items
- 1.1 使用TODO 状态
- 1.2 多状态工作流
- 1.3 过程记录
- 1.3.1 关闭items
- 1.3.2 跟踪TODO状态变化
- 1.4 优先级
- 1.5 把任务分割成子项目
- 1.5.1 xsd [100%]
- 1.6 复选框
1 TODO Items
Org并没有在额外的文档中维护TODO列表,反而,TODO项是在笔记中合法的部分,因为TODO项往往发生在记笔记的时候!通过Org mode,可以很快的把一项变成一个TODO项。信息不会重复。
当然,这样就会把TODO项随意的放置到你的笔记中,Org mode也提供了一个TODO的总览。
1.1 使用TODO 状态
任意一个标题可以通过以"TODO"开始来标记为一个TODO项,比如:
*** TODO Write letter to Sam Fortune
操作TODO项的最重要的命令是:
C-c C-t 对当前的TODO项循环状态 ,-> (unmarked) -> TODO -> DONE --. '--------------------------------' S-right/left 选择下/上一个TODO状态 C-c / t 通过稀疏树查看TODO项,折叠整个buffer,但是层次化地展现所有的TODO项 C-c a t 展示全局的TODO列表,从日程文件中收集TODO项到一个单独的buffer中。 S-M-RET 在当前项的下面插入一个新的TODO项
改变一个TODO的状态会触发一个tag改变,可以从org-todo-state-tags-triggers的文档中获得更详细的信息。
1.2 CANCELED 多状态工作流
可以为工作项定制不同的线性状态,例如:
(setq org-todo-keywords '((sequence "TODO" "FEEDBACK" "VERIFY" "|" "DONE" "DELEGATED")))
中间的竖线从分割了TODO关键字和DONE状态,如果你不提供中间的分隔符,最后一个状态将会被视为DONE状态。通过这样的配置,C-c C-t命令会从TODO循环到FEEDBACK,然后到VERIFY最后到DONE和DELEGATED。
有的时候你可能想并行的用不同集合的TODO关键字。例如,你既想有基本的TODO/DONE,也想有解决BUG的工作流,还想有一个额外的状态指出一个项已经被取消了(不是DONE,但也不需要做了),你的配置可能需要是这样:
(setq org-todo-keywords '((sequence "TODO(t)" "|" "DONE(d)") (sequence "REPORT(r)" "BUG(b)" "KNOWNCAUSE(k)" "|" "FIXED(f)") (sequence "|" "CANCELED(c)")))
所有的关键字应该是不同的,这样能够帮助Org mode追踪序列。上面的配置也展示了如何为指定状态定义快捷键,通过在每个关键字后面加上一个用圆括号括起来的字母——你将会在按下C-c C-t后被提示。
可以在一个文件中单独顶一组TODO关键字,这样这组关键字就只能在那一个文件中使用:
#+TODO: TODO(t) | DONE(d) #+TODO: REPORT(r) BUG(b) KNOWNCAUSE(k) | FIXED(f) #+TODO: | CANCELED(c)
当作上述修改后,在使用C-c C-c即可加载到org mode的配置中。
1.3 过程记录
当你将一个TODO项变为DONE时,Org mode会自动的记录一个时间戳,或者你每次修改TODO项的状态时都记录时间戳。
1.3.1 关闭items
使用(也可以加入'#+STARTUP:logdone')
(setq org-log-done 'time)
然后每次你把TODO转换到任意DONE状态时,一行'CLOSED:[timestamp]'会被插入到标题的后面,如果你还想再加入备注使用(也可以加入'#+STARTUP:lognodedone')
(setq org-log-done 'note)
你每次都会被要求做个备注,然后这个备注会以'CLOSING NOTE'标题的形式放在TODO项的下面
- FIXED hello
- CLOSING NOTE
haha
- CLOSING NOTE
1.3.2 跟踪TODO状态变化
你可能想跟踪TODO项的状态变化,可以这么做:
#+TODO: TODO(t) WAIT(w@/!) | DONE(d!) CANCELED(c@)
这里'!'代表一个时间戳,'@'代表一个笔记。这里的语法同样在设定org-todo-keywords中适用。
1.4 优先级
优先级可以放在TODO项的标题中,像这样:
*** TODO [#A] Write letter to Sam Fortune
Org mode 支持三种优先级:'A','B','C','A'优先级是最高的优先级,'B'是没有优先级的默认选项,优先级的属性差别在日程表中显现出来。
- C-c ,
- 设定当前标题的优先级,键入'A,'B','C'选择优先级或者SPC去除cookie。
- S-up/down
- 增加或者减少当前的标题的优先级
1.5 把任务分割成子项目
把大的任务分割成小的任务是非常常见的,你可以在TODO项的下面创建大纲树,在这个大纲树里面详细的写下子任务。为了查看整体的任务完成百分比,可以在标题的任何位置插入'[/]'或者'[%]'。通过改变子任务的状态可以触发进度值得改变,或者在进度值上面键入C-c C-c例如:
* Organize Party [25%] ** TODO Call people [1/2] *** TODO Peter *** DONE Sarah ** TODO Buy food ** DONE Talk to neighbor
或者:
1.5.1 DONE xsd [100%]
- CLOSING NOTE
done
- DONE Call people [2/2]
- CLOSING NOTE
done
- CLOSING NOTE
- DONE Peter
- CLOSING NOTE
done
- CLOSING NOTE
- DONE sarah
1.6 复选框
checkbox并不包含在全局的TODO列表中,但是它经常被用来把一个任务划分成几个简单地步骤:
* TODO Organize party [1/3] - [-] call people [1/2] - [ ] Peter - [X] Sarah - [X] order food - [ ] think about what music to play ORG-LIST-END-MARKER
- C-c C-
- 改变checkbox的状态
- M-S-RET
- 插入一个checkbox,这个只能发生在光标位于一个plain列表项中