本文是学习使用 ORG 系列中的第一篇,该系列是在学习过程中逐步整理而成,仍然在不断更新之中。在本文中,我们将介绍 Emacs org 模块的一些基本功能,一些学习心得以及一个需要的必要工具和配置。

1 学习建议

通过使用 ORG 撰写文章及管理代办事项,并不断的折腾我的 ORG 配置,特别是学习过程中遇到的问题,总结一些学习经验。

  • 建议从将 ORG 作为标记语言,从撰写文章开始入手,ORG 的其他功能,如待办事项、日程表等功能和 ORG 文档的结构及基本特性相关。我个人也是这样干的。
  • 先不要自己折腾 ORG 模块的配置(Emacs lisp 高手例外),先做拿来主义者,我个人 ORG 模块配置一开始是从 purcell Emacs - init-org.el 复制而来,再根据需要后面逐步调整。你可以可以参照我的配置
  • 在每个主题下面,会针对该主题列出几条学习建议或者心路历程,仅供参考。
  • 熟练使用 M-x 执行命令,绑定 M-x 快捷键至 helm-M-x 以帮助快速定位和执行命令,这个可以缓解记住快捷键的问题。
  • 结合上条,只需要记住几个必要的快捷键即可,使用多了,自然也就记住了。

2 ORG 功能概览

本节参照 ORG 官网 List Features 翻译。

ORG 是一个快速高效的纯文本系统,可用于记日记、维护待办事项列表、计划项目以及撰写和发布文档。ORG 可以说是 Emacs 相当重要的组成部分。本文就是用 Emacs ORG 模块撰写。我也将 ORG 模块用于安排日程和跟踪 OKR。

  • 写作 (Editing)
    • ORG 支持大纲结构,可以快速容易的在不同标题之间导航
    • 支持折叠标题内容
    • 内置便捷的快捷键绑定和很多高效编辑设施。
  • 计划 (Planning)
    • 可以用于管理待办事项 (TODO) 列表和计划
    • 每个标题可以被当作一个任务
    • 可配置待办事项关键字及通过 C-c C-t 或者 S-<left/right> 快捷键切换关键字
    • 支持计划元数据,如:排期 (scheduled)、截止日期 (deadline)、标签、属性等。
  • 捕获 (Capturing)
    • 将一个代办事项添加到 .org 文件的过程称之为 capturing
    • 您可以从任意地方 capture,既可以在 Emacs 中,也可以通过其他应用程序(如浏览器、PDF 阅读器等)
    • Capture 模版允许您定义想 capture 的上下文信息
  • 计时 (Clocking)
    • 启动任务计时 C-c C-x C-i
    • 结束任务计时 C-c C-x C-o
    • 计时日志记录在抽屉里 (drawer)
    • 支持可定制的格式报告
  • 日程表 (Agendas)
    • ORG 模块帮助您聚焦于任务,可以轻松管理很大的 .org 文件和数千任务
    • 内置日程表视图按周显示任务排期计划和截止日期、待办事项列表以及停滞的项目
    • 日程表视图支持根据需要进行定制:支持按天/按周/按月;支持以标签和待办事项列表关键字定制
    • 日程表是 ORG 的关键模块
  • 列表 (Tables)
    • ORG 是一个优秀的纯文本表格编辑器
    • 可以通过 .csv.tsv 文件,或者直接从当前缓冲区导入列表
    • 支持导出多种格式
    • ORG 也可以被用作一个电子表格 (spreadsheet) 系统
    • 您可以使用 Calc Emacs 包或者 Emacs lisp 代码为表格添加计算公式
  • 发布 (Exporting)
    • ORG 是一个出版发布工具
    • 可以使用直观的标记将 ORG 文档转换为 HTML, LaTeX, ODT 等格式文档
    • 开发者可以很容易的创建新的后端以支持特定格式
    • 您可以为一个或者多个 .org 文件定义发布项目,并可以定义一个或者多个发布后端
  • 嵌入代码 (Working with source code)
    • ORG 以便捷和自然的方式支持文学编程 (literate programming)
    • 支持插入代码片段、在 ORG 缓冲区执行代码片段并输出计算结果;支持从 Org 文件抽取源代码文件

3 工具安装和配置

Org 模块内置于 Emacs 安装包中,有关 ORG 的详细配置,请参阅 Junahan’s Emacs (为了节省时间,不建议折腾自己的 ORG 配置,等使用相当熟练了,再了解和定制自己的 ORG)。ORG 模块的一些功能依赖于应用工具,为了省心,先需要将这些依赖分别安装以确保 ORG 功能能够正常的工作。请参阅后续几个小节安装必要依赖软件包。这里以 MacOS 为例,使用 brew 安装相应的工具包,其他平台也有类似的工具,请自行学习处理。

3.1 拼写检查

建议使用 aspell + ispell-mode。运行如下命令安装 aspell

1
$ brew install --with-lang-en aspell

添加如下配置启用拼写检查。

1
2
3
4
5
6
7
8
;; for spell check
;; could be ispell as well, depending on your preferences
(setq ispell-program-name "aspell")
;; this can obviously be set to any language your spell-checking program supports
(setq ispell-dictionary "english")

(add-hook 'org-mode-hook 'flyspell-mode)
(add-hook 'org-mode-hook 'flyspell-buffer)

3.2 安装 MacTex 及相关工具包

ORG Mode 使用 MacTex 发布 PDF 以及 Tex 格式文档,可直接运行如下命令安装 MacTex :

1
$ brew cask install mactex
1
2
3
4
5
6
sudo tlmgr install environ
sudo tlmgr install trimspaces
sudo tlmgr install zhnumber
sudo tlmgr install ctex
sudo tlmgr install needspace
sudo tlmgr install xecjk
  • 执行 sudo fmtutil-sys --all 命令,重新生成 FMT(Plain TeX、LaTeX、LuaTeX)。
  • 执行 sudo tlmgr update -all 可以更新 MacTex。
  • 运行命令 pdflatex texname.tex 测试输出 PDF。

3.3 安装 pandoc

ORG ox-pandoc 模块使用 pandoc 发布 (exporting) .org 文档至众多 pandoc 支持的格式。

1
brew install pandoc

3.4 安装 graphviz 和 PlantUML 包

ORG 模块 ditaa 使用 Graphviz 和 PlantUML 包支持纯文本作图,特别是 UML 各类图的制作。

1
brew install ditaa graphviz plantuml

3.5 安装图床工具

图床工具用于上传图片至图床平台 (如微博图床),我使用 iPic 图床工具,将图片作为 URL 插入文档。这样可以让 ORG 文件只依赖纯文本内容,便于发布和移动。

4 记住几个必要快捷键

快捷键 命令 说明
TAB org-cycle 依次展开/折叠大纲标题
M-x helm-M-x 使用 helm-M-x 替代 M-x 以快速定位和执行常用命令
C-p preview-line 移动光标至上一行
C-n next-line 移动贯标至下一行
C-c C-t org-todo 改变 item 的 TODO 状态
C-c C-p org-previous-visible-heading
C-c C-n org-next-visible-heading
C-c a org-agenda 打开 Agenda 视图
C-c c org-capture 随时随地捕捉灵感,快速加入 TODO 或者 NOTE
C-c C-c org-ctlr-c-ctlr-c 根据上下文执行不同的命令

5 参考文献

  1. Org mode for Emacs - Your Life in Plain Text, 2019.
  2. Org mode 手册学习笔记, 2017.
  3. EMACS-DOCUMENT, 这里有很多有关 Emacs 的笔记和学习资料, 2019.
  4. 3 Emacs modes for taking notes, 2018.
  5. 用来记笔记的三个 Emacs modes, 2019.
  6. Deft for Emacs, 2019.
  7. 熟练使用org-mode管理日常事务, 2014.
  8. 如何利用Emacs进行个人时间管理(GTD), 2018.
  9. ob-http, 2018.
  10. Pomodoro Technique, 2019.
  11. 一年成为 Emacs 高手, 2019.
  12. Org Mode - Organize Your Life In Plain Text!, 2015.
  13. Orgmode 利用 ox-pandoc 导出 hugo 博客的 workflow, 2013.
  14. ox-pandoc, 2019.
  15. Emacs 新思维系列, 2013.
  16. org-mode git repository, 2019.
  17. cnfonts (Emacs 中文配置) by tumashu, 2019.
  18. Emacs for MacOS, 2019.

本作品采用知识共享署名 4.0 国际许可协议