乞丐哥的私房菜(Org 篇-- Emacs 中 Org 使用 TODO 节)

Emacs Version: 30.1

Org Version: 9.7.11

此篇要求对 Emacs 有基本的了解。

Emacs Org TODO 的使用规则

基本功能

TODO 以星号开头加一个空格,星号在这里也表示层级关系。例如:下面的示例表示一个未
标记的 TODO,且是在第三级。

*** TODO 做一份西红柿炒鸡蛋

TODO 中重要的处理条目的命令:C-c C-t (org-todo);如果没有设置其它快速访问待办状态,
会一直在标记之前、 TODO 和 DONE 之间切换。
S-RIGHT S-LEFT

在 TODO 的各个状态之间切换。

C-c / t (org-show-todo-tree)

折叠整个缓冲区,但显示所有 TODO 及 TODO 所在的层的标题

M-x org-agenda t(org-todo-list)

此命令在后绪章节介绍

S-M-RET (org-insert-todo-heading)

在当前行或下一行插入一个新的 TODO 项

keywords 的扩展使用

此节的keywords,表示 TODO 的状态,如:WAIT、DONE等

一般情况下,TODO 只有两种状态:“TODO” 和 “DONE”。但 org-mode 允许更复杂的对 TODO 进行分类(状态存储在org-todo-keywords变量中)。

keywords 在TODO的工作流状态

用 keywords 表示处理项目时的不同状态。此处有中文,只是演示,真实的文档中不能有中文状态 keywords ,例如:

(setq org-todo-keywords
      '((sequence "买菜" "洗菜" "切菜" "炒菜" "|" "完成" "取消")))
  • 用 C-c C-t 可顺序切换
  • 用 C-数字 C-c C-t 可直接更改/选择状态

keywords 的分类(类型)

TODO “keywords” 不只表示状态,还可以:

  • 可表示项目中的状态
  • 可表示项目的分类
  • 可表示项目中的人
  • ……

一个文件中的多个keyword

org-todo-keywords变量,可以有多个 sequence

  (setq org-todo-keywords
      '((sequence "TODO" "|" "DONE")
        (sequence "AXXX" "BXXX" "CXXX" "|" "DXXX"
        (sequence "|" "EXXX")))

C-S-RIGHT
C-S-LEFT
在各 sequence 列表切换

快速访问TODO状态

  (setq org-todo-keywords
      '((sequence "TODO(t)" "|" "DONE(d)")
        (sequence "AXXX(a)" "BXXX(b)" "CXXX(c)" "|" "DXXX(D)"
        (sequence "|" "EXXX(e)")))

设置完成后,再按/C-c C-t/试试。

为单个文件设置keywords

在单个.org文件的任意一行输入(单个 sequence):

  #+TODO: TODO CODING DEBUG | DONE CANCELED

在单个.org文件的任意一行输入(并行的 sequence):

  #+TODO: TODO(t) | DONE(d)
  #+TODO:  AXXX(a) BXXX(b) CXXX(c) | DXXX(D)
  #+TODO: | EXXX(e)

用于TODO keywords的样式设置

状态关键字若多于两个,用 org-todo-keywords-faces 变量设置关键字的样式,如:

  (setq org-todo-keyword-faces
        '(("TODO" . org-warning) ("BXXX" . "yellow")
  	("EXXX" . (:background "blue" :weight bold))))

父子级(多任务)TODO的依赖

  • 简单的依赖关系
  * [1/2][50%] Total Task
  ** DONE Task one
  ** TODO Task two
  • 较复杂的依赖关系
    * Totla Task [2/4]
    - [-] Task one [1/2]
      - [X] Subtask one         ## 试试万能的 /C-c C-c/
      - [ ] Subtask two         ## 在上行末尾试试 /M-S-RET/
    - [ ] Task two
    - [X] Task three [3/3]
      - [X] Subtask one
      - [X] Subtask two
      - [X] Subtask three
    - [X] Task four

进度记录(记录状态变化)

  ,** DONE 记录项目进度                    ## 试试 /C-u C-c C-t/
   - State "DONE"       from "DXXX"      [2025-07-17 周四 15:34] DONE
   - State "DXXX"      from "BXXX"     [2025-07-17 周四 15:33] DXXX
   - State "BXXX"     from "TODO"       [2025-07-17 周四 15:30] BXXX

结束事项(每个 sequence 的最后一项视为结束)

在 Emacs 配置文件里面加上

  (setq org-log-done 'time) ## 只记录时间

设置完成并且让生效后,试试 /C-c C-t/ ,在最初状态和结束状态切换,看看有什么结果。

  (setq org-log-done 'note) ## 记录时间且记录状态变化的简单描述(交互式),得自己写。

跟踪 TODO 状态变化

给个例子自己体会一下:

  #+TODO: AXXX(a) BXXX(b@/!) | DONE(d!) CANCELED(c@)  ##测试之前记得加上这行
  ,*** CANCELED ## 跟踪(记录)状态变化
   CLOSED: [2025-07-17 周四 17:56]
   - State "CANCELED"   from "DONE"       [2025-07-17 周四 17:56]  canceled
   - State "DONE"       from "BXXX"       [2025-07-17 周四 17:56]
   - State "BXXX"       from "AXXX"       [2025-07-17 周四 17:55]  BXXX

/“!”/ 只记录时间戳,/“@”/ 有时间戳也有简单描述,两个一起用得用 / 隔开。

记录你的习惯

后面章节会讲到

优先事项

  • 三个优先级别:A、B、C
  • 默认优先级别:B
  • 最高优先级:A
  • 优先级只在议程中有效
  • 可以设置数字表示的优先级
    *** TODO [#A] 给儿子做饭    ## /C-c ,/ 设置当前标题的优先级
    *** TODO [#B] 收拾家务
    #+PRIORITIES: A C B       ## 可以更改默认优先级顺序

复选框

  • 类似 TODO,比 TODO 轻量
  • 不包含在全局的 TODO 列表中
  • 适合任务拆分为多个简单任务
  • 两种进度显示方式[0/0] [0%]
  - [-] 生日晚会 [3/4] 
    - [X] 打电话给朋友 [3/3]
      - [X] 张三
      - [X] 李四
      - [X] 王五
    - [X] 选地点
    - [ ] 过程中的活动
    - [X] 聊天,道别
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值