Org mode 入门篇
Table of Contents
学习材料、路线
标题
#+TITLE: org-mode 入门篇
字体格式
blod | * |
italic | / |
+ | |
underline | _ |
= | |
code |
~ |
下标: | \(H_{2}O\) |
上标: | \(E=mc^2\) |
大纲视图
org-mode 用 * 号表示标题的层级关系,就像这样:
* 一级标题 内容 ** 二级标题 内容 ** 二级标题 内容 * 一级标题 内容 ** 二级标题 内容
org-mode 有三种大纲显示模式:
全局 global
- OVERVIEW
- CONTENTS
- SHOW ALL
键入 S-TAB 在三个模式下切换。
- OVERVIEW
子项 subtree
- FOLDED
- CHILDREN
- SUBTREE
将光标放置与某个子项上键入 TAB 在三个模式下切换。
- FOLDED
快捷键
- 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 包一起使用可以实现类似电子表格的计算。
先创建列名
| name | age | tel |
创建分割线
| name | tel | age | |------+-----+-----| | name | tel | age| | - | - - > TAB
- 按 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 刷新进度的状态
复选框
还记得清单列表么,其中有一个复选框的样式,复选框不会被包含在全局的待办事项列表中,因此很适合用来将一个待办事项划分为多个步骤的操作: