Org mode 入门篇

Table of Contents

学习材料、路线

标题

#+TITLE: org-mode 入门篇

字体格式

blod *
italic /
strick through +
underline _
verbatim =
code ~
下标: \(H_{2}O\)
上标: \(E=mc^2\)

大纲视图

org-mode 用 * 号表示标题的层级关系,就像这样:

* 一级标题
内容

** 二级标题
内容

** 二级标题
内容

* 一级标题
内容

** 二级标题
内容

org-mode 有三种大纲显示模式:

  1. 全局 global

    • OVERVIEW
    • CONTENTS
    • SHOW ALL

    键入 S-TAB 在三个模式下切换。

  2. 子项 subtree

    • FOLDED
    • CHILDREN
    • SUBTREE

    将光标放置与某个子项上键入 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/RIGHT 将当前标题提升或降级
  • M-UP/DOWN 上下交换同级别
  • C-c C-w 将当前条目放置与指定条目下
  • C-x n s/w 以当前子项为单位进行变窄和变宽

列表

  • 无序列表用 “-”, “+” 或 “*”
  • 有序列表用 “1.” 或 “1)”
  • 可以指定列表的说明,使用 “::” 将条目标题与说明隔开

快捷键

  • TAB 类似于标题的折叠
  • M-RET 新建同级项,如果要改变条目类型,可以使用前缀参数
  • M-S-RET 新建带有复选框的同级项
  • M-S-UP/DOWN 上下移动当前项,如果是有序的还会自动编号。
  • M-LEFT/RIGHT 将当前项降级或者升级
  • C-c C-c 勾选复选框
  • C-c - 循环修改当前项的条目符号

表格

org-mode 带有一个快速直观的表格编辑器,如果与 emacs 的 calc 包一起使用可以实现类似电子表格的计算。

  1. 先创建列名

    | name     | age | tel |
    
    
  2. 创建分割线

    | name | tel | age |
    |------+-----+-----|
    | name | tel | age|
    | -
    |
    - - > TAB
    
  3. 按 TAB 或 RET 新建行

快捷键

  • C-c C-c 重新对齐表格
  • TAB 重新对齐表格/移动到下一个单元格/创建新行
  • S-TAB 重新对齐表格/移动到上一个单元格
  • RET 重新对齐表格,并移动到下一行/创建新行
  • S-UP/DOWN/LEFT/RIGHT 交换单元格为上下左右的单元格
  • M-LEFT/RIGHT 交换列为左边或右边的列
  • M-S-LEFT 删除当前列
  • M-S-RIGHT 向右插入新列
  • M-UP/DOWN 上下移动当前行
  • M-S-UP 删除当前行
  • M-S-DOWN 在当前行上方插入新行,如果指定前缀参数会下下方插入新行
  • C-c - 在当前行上插入分割线
  • C-c RET 在当前行下插入分割线,并移动到水平线下一行
  • C-c ^ 根据当前列对表格进行排序

链接

  • 带说明的超链接

    [[https://www.baidu.com][百度一下,你就知道]]
    
  • 不带说明的超链接

    [[www.baidu.com]]
    
  • 图片链接

内部链接

也就是指链接与当前文件的一些链接,例如链接到当前文件某处

[[My Target1]]
[[My Target2][目标2]]

<<My Target1>>
<<My Target2>>

外部链接

org-mode 的超链接支持指向文件,网站,电子邮件等等

[[https://www.baidu.com][百度一下,你就知道]]
[[file:~/.emacs.d/init.el][Emacs Config - init.el]]
[[mailto:the_lty_mail@foxmail.com][EvanMeek's 邮箱]]
[[irc:/irc.com/#emacs/evanmeek][IRC Emacs]]
[[info:org#Hyperlinks][Emacs Org超链接内部文档]]

在指定文件为指向的链接时,可以指定特定行或目标:

[[file:~/.emacs.d/init.el::15][Emacs Config - init.el 15L]]
[[file:~/.emacs.d/test.org::Test Target][test.org Test Target]]

我们可以使用命令 org-store-link 存储当前的位置,然后再通过一些处理超链接的方式处理当前位置的链接,你可以将其绑定一个快捷键。

  • C-c C-x C-v 如果文件链接是图片,使用 C-c C-x C-v 显示图片。
  • C-c C-l 插入链接
  • C-c C-l 当光标置于一个超链接上,可以直接编辑它
  • C-c C-o 打开当前光标下的超链接

导出与发布

  • c-c c-e

待办事项

基础的待办事项功能

当标题的开头为“TODO”时,任何标题都会成为一个待办事项,例如:

* TODO 完成ORG-MODE笔记xxx部分

可以通过按键 C-c C-t 来对一个已存在标题标记不同的待办状态,默认情况下有三种待办状态:

  • TODO 待办事项
  • DONE 已完成的待办事项
  • unmarked 未标记为待办事项的标题,也就是普通的标题

还可以通过 agenda 缓冲区的 t 命令按键来远程完成切换不同待办状态。

  • C-c / t 用 Sparse Trees 浏览待办事项
  • M-x org-agenda t 显示全局的待办事项,待办事项列表从所有的 agenda 文件中收集,然后在一个单独的缓冲区内显示。
  • S-M-RET 新建一个待办事项

标签

  • C-c C-q 创建标签
  • C-c C-c 标题上创建标签

多种工作流状态

你可以为使用 “TODO” 关键字表明 @emph[顺序] 工作流状态:

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

竖线之前的状态代表需要完成的事,而之后代表已完成的事。

有时你可能想要使用不同的方式设置 “TODO” 关键字:

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

以上代码让你在为一个标题提供待办事项状态时添加了一个键序列,你可以键入 C-c C-t 来查看效果。

如果你想为单独的 org 文件提供一个待办状态,并且为其添加键序列,可以使用如下配置:

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

时间戳由尖括号 <> 或方括号 [] 表示,前者为激活时间,后者为非激活时间(不加入日程表的时间)。

记录日志

(setq org-todo-keywords
      '((sequence "TODO(t!)" "WAIT(w!)"  "|" "DONE(d@)" "CANCEL(c@)")))

其中 @ 代表记录日志,而 ! 代表记录时间戳,你也可以让他们具有两种功能: TODO(t@/!)

同样,我们也可以单独为某个 org 文件设置:

#+TODO: TODO(t) | WAIT(w@/!) | DONE (d!) CANCEL(c@)

优先级

当你大量使用Org模式后,你可能会有大量的待办事项条目,这个时候你可以为其设置优先级标记:

*** TODO [#A] 洗碗

有三种优先级模式,A-C,若不指定优先级,’B’等级是默认的。

  • C-c , 设置当前标题的优先级,键入 A-C 设置级别,或者键入 SPC 清除标记
  • S-UP/DOWN 提升/降低当前标题的优先级

任务细分

我们可以将一个待办事项分为多个小的待办事项,并且可以用一些标记用于对小的待办事项做统计:

待办事项的进度有两种呈现方式,一种是标记为 [/] 另一种是标记为 [%] ,如果它们的子项已完成,那么当前待办事项会自动切换状态为 DONE。

  • C-c C-c 刷新进度的状态

复选框

还记得清单列表么,其中有一个复选框的样式,复选框不会被包含在全局的待办事项列表中,因此很适合用来将一个待办事项划分为多个步骤的操作: