跳转至

org-mode 基础

org 是一个大纲视图,大纲允许以分层结构组织文档。可以通过折叠只显示一般文档结构和当前正在处理的部分。 使用 Tab 可以切换折叠和展开,使用 Shift-Tab可以全局展开和折叠。

文档结构

标题

* 一级标题
** 二级标题
*** 三级标题
    一些文档内容
*** 三级标题
    其他内容
* 另一个一级标题

移动快捷键

  • C-c C-n 下一个标题
  • C-c C-p 上一个标题
  • C-c C-f 同级别下一个标题
  • C-c C-b 同级别上一个标题
  • C-c C-u 回到上一级标题

结构编辑快捷键

  • M-RET 插入当前级别相同的新标题或者列表行
  • M-S-RET 插入当前级别相同的 TODO 标题或者列表行
  • TAB 在一个新的条目中,可以在合理的级别之间循环,也就是切换标题级别或者列表行缩进
  • M-LEFT 将当前标题提升一个级别
  • M-RIGHT 将当前标题下降一个级别
  • M-UP 向上同级别移动标题内容
  • M-DOWN 向下同级别移动标题内容
  • C-c C-w 将当前级别标题内容移动到其他更高级别下
  • C-x n s 当前缓冲区只显示当前标题级别,进入到 narrow 模式
  • C-x n w 退出 narrow 模式

列表

列表可以分成

  • 无序列表,以 -, +, * 开头
  • 有序列表,以 1., 1) 开头
  • 描述列表,以 :: 开头

比如

* 列表
  做饭
  1. 买菜
    + 土豆
    + 猪肉
  2. 做饭
  出门要带
  - 钥匙 :: 不然怎么开门
  - 手机 :: 不然怎么买菜

快捷键

  • TAB 折叠或者展开列表行
  • M-RET 插入同级别新列表行
  • M-S-RET 插入带有复选框的新列表行
  • M-UP 向上移动列表行
  • M-DOWN 向下移动列表行
  • M-S-LEFT 减少缩进
  • M-S-RIGHT 增加缩进
  • C-c C-c 切换复选框状态
  • C-c - 切换列表符号,如 -, +, *1., 1)

表格

表格基本写法如下

| Name  | Phone | Age |
|-------+-------+-----|
| Peter |  1234 |  17 |
| Anna  |  4321 |  25 |

每次表格中按下 TAB, RET, C-c C-c 的时候,表格都会重新对齐。分隔线只需要输入 |- 之后,TAB 补全就可以。 更快的是输入 | Name | Phone | Age 之后输入快捷键 C-c RET

快捷键

  • C-c | 将活动区域转换成表,如果没有活动区域,创建一个空的 org 表
  • C-c C-c 重新对齐表格
  • TAB 重新对齐表格,移动到下一个字段,如果有必要,创建新行
  • S-TAB 重新对齐表格,移动到上一个字段
  • RET 重新对齐表格,移动到下一行,如果有必要,创建新行
  • S-UP 向上移动单元格
  • S-DOWN 向下移动单元格
  • S-LEFT 向左移动单元格
  • S-RIGHT 向右移动单元格
  • M-LEFT 向左移动当前列
  • M-RIGHT 向右移动当前列
  • M-UP 向上移动当前行
  • M-DOWN 向下移动当前行
  • M-S-UP 删除当前行
  • M-S-DOWN 在当前行上方插入行
  • C-c - 在当前行下方插入一条水平线
  • C-c ^ 对表格进行行排序,基于光标所在的列

超链接

基本使用格式

[[链接][描述]]
[[链接]]

编写完成之后,会只显示描述,可以使用 C-c C-l 编辑。

内部链接

如果链接看起来不是 URL,那么它在当前文件中是内部链接,比如 [[my-custom-id]] , [[My Target]], [[My Target][Find my Target]]

快捷键

  • C-c C-l 创建或者编辑链接
  • C-c C-o 打开链接

TODO

基本使用

*** TODO 早睡早起

快捷键

  • C-c C-t 切换 TODO 状态
  • S-LEFT 切换 TODO 状态
  • S-RIGHT 切换 TODO 状态
  • C-c / t 查看 TODO 稀疏树
  • org-agenda t 显示全局 TODO 列表
  • S-M-RET 插入新的 TODO

把 TODO 设置多个状态

(setq org-todo-keywords
      '((sequence "TODO" "FEEDBACK" "VERYFY" "|" "DONE" "DELEGATED")))

设置多个系列的 TODO

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

如果是在单个文件中定义多个系列的 TODO

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

优先级

基础写法

*** TODO [#A] 学习emacs

默认有三个优先级,A 是最高的,B 是默认值,C 是最低的

快捷键

  • C-c , 设置当前标题的优先级
  • C-UP 增加优先级
  • C-DOWN 降低优先级

分解子任务

在标题任意位置插入 [/][%] 都可以添加任务进度

* Organize Party [33%]
** TODO Call people [1/2]
*** TODO Peter
*** DONE Sarah
** TODO Buy food
** DONE Talk to neighbor

复选框

普通列表可以转换成复选框,复选框不包含在全局 TODO 列表中

* TODO Organize party [2/4]
  - [-] call people [1/2]
    - [ ] Peter
    - [X] Sarah
  - [X] order food

快捷键

  • C-c C-c 切换复选框状态
  • C-u C-c C-c 切换是否包含复选框
  • M-S-RET 插入带有复选框的新列表行

标签

基本写法,可以 C-c C-c 添加标签

* my task        :work:urgent:

标签继承

如果标题具有标签,所有的副标题也会继承标签

* Meeting with the French group      :work:
** Summary by Frank                  :boss:notes:
*** TODO Prepare slides for him      :action:

可以定义文件级别的标签

#+FILETAGS:  :Peter:Boss:Secret:

设置标签

  • C-c C-c 为标题设置标签
  • C-c C-q 为标题设置标签

标签搜索

  • C-c / m or C-c \ 创建稀疏树来搜索匹配项,使用 C-u 前缀,只选中 TODO
  • M-x org-agenda m 从所有议程文件创建标记匹配的全局列表
  • M-x org-agenda m 从所有议程文件创建标记匹配的全局列表,但是仅仅选中 TODO

属性

快捷键

  • C-c C-x p 设置属性
  • C-c C-c d 删除属性