使用 Emacs Org-mode 提升效率

作者:Abhijeet Chavan

有人说,Emacs 这个用于文本处理的多功能工具箱,不仅仅是一个文本编辑器,更是一种生活方式。这绝非夸张。在本文中,我将向您展示如何将 Emacs 转变为一个灵活的个人组织和生产力系统。

我最初使用 Emacs 进行编程,但很快发现它在非编程写作任务中也表现出色。我开始尝试几种模式,这些模式扩展了 Emacs 的功能,用于编写笔记和规划项目。尽管每种模式都有其自身的用途,但这些功能或模式都不符合我的工作风格。然后我发现了 Org-mode。

Org-mode 是 Carsten Dominik 开发的一种新的 Emacs 模式。它旨在用于记笔记、列提纲、写作、项目规划、维护待办事项列表、时间管理,甚至发布到网站——所有这些都只使用 Emacs 和纯文本。

纯文本?为什么有人想用纯文本来完成以上所有操作?纯文本具有多个优点。您不会被锁定在文件格式或操作系统中。您可以使用任何可用的文本编辑器编辑纯文本文件。从电子邮件消息中复制和粘贴纯文本非常容易。您可以使用版本控制系统(如 CVS 或 Subversion)跟踪文档中的更改。在写作时,我发现纯文本还有一个优点——它可以让我更好地思考并专注于我的想法,而不会受到文字处理软件的干扰。

Org-mode 入门

在本文中,我假设您已安装 Emacs 并对其使用有一定的了解。如果您还不是 Emacs 用户,那么 Org-mode 可能会给您一个开始使用它的充分理由。(有关 Emacs 入门的更多信息,请参阅“资源”部分。)

GNU Emacs 22 中包含了 Org-mode。您也可以安装 Org-mode 以在 GNU Emacs 21 和 XEmacs 中使用。我使用 GNU Emacs 22 和 Org-mode 4.42 撰写了本文。如果您系统上已经安装了 Emacs,请通过键入以下命令来检查 Org-mode 是否可用

M-x org-mode

以上符号表示按 meta 键(Esc 或 Alt,取决于您的设置),然后按 x,再按org-mode,然后按 Return(或 Enter)键。

如果 Emacs 显示“No Match”,则表示您没有安装 Org-mode。您需要手动安装 org-mode 或安装 GNU Emacs 22。您可以找到适用于您的 Linux 发行版甚至其他操作系统的 GNU Emacs 22 预编译二进制文件。在 Ubuntu 7.04 (Feisty Fawn) 上,您可以通过运行以下命令来安装 GNU Emacs 22(带有 Org-mode 4.56d)

sudo apt-get install emacs-snapshot

如果您需要在 GNU Emacs 21 或 XEmacs 上安装 Org-mode,请从 orgmode.org 下载最新版本,并查找提供详细安装说明的手册。(Org-mode 文档包含一本超过 100 页的优秀手册和一张方便的参考卡。)安装 Org-mode 后,再次运行M-x org-mode命令。如果 Org-mode 安装正确,Emacs 将在其模式行区域显示“(Org)”,并且 Org-mode 将处于活动状态。如果您在图形环境中运行 Emacs,您还应该看到 Org 下拉菜单(图 1)。

Get Organized with Emacs Org-mode

图 1. Org-mode 的图形用户界面菜单

尽管 Org-mode 提供了图形菜单,但在本文中,我仅参考 Org-mode 键盘命令。一旦您熟悉了 Org-mode 快捷键,您会发现它们比图形菜单更有效率。

将以下行添加到您的 ~/.emacs 文件并重启 Emacs

;; Org-mode settings
(add-to-list 'auto-mode-alist '("\\.org$" . org-mode))
(global-set-key "\C-cl" 'org-store-link)
(global-set-key "\C-ca" 'org-agenda)
(global-font-lock-mode 1)

现在,如果您将 Org 文件保存为 .org 扩展名,它们将在 Emacs 中使用 Org-mode 打开。我建议创建一个目录来保存所有 Org 文件。我使用 ~/notes。尽管您可以为任何文本文件调用 org-mode,但将它们放在一个目录中会更方便。

列提纲和写作

列提纲是组织思路、记笔记或撰写文章的有效技巧。Emacs 具有内置的 outline-mode,可以将文本存储为条目。每个条目都有一个标题和一个正文。条目可以嵌套以创建分层信息的树状结构。Emacs 使用星号(*)来表示提纲树的层次结构。不以星号开头的行被认为是其上方标题的正文。在以下示例中,** 苹果是一个标题。苹果是红色的是“苹果”标题的正文。

* Fruit 
** Apples 
Apples are red 
** Oranges 
Oranges are orange 
*Vegetables

树的分支可以折叠和隐藏,以便更轻松地导航树并处理树的特定部分。当标题折叠时,其正文和子树(所有分支)都将从视图中隐藏,并且标题将显示并以省略号(三个点)结尾。

提纲结构

Org-mode 基于 Emacs 的 outlinemode,但它使处理提纲变得更加容易。将光标放在标题上。使用 Tab 键,您可以展开标题以显示其分支和正文。使用 Shift-Tab 对整个文档执行相同的操作(图 2-4)。

Get Organized with Emacs Org-mode

图 2. 提纲概览

Get Organized with Emacs Org-mode

图 3. 部分展开的提纲

Get Organized with Emacs Org-mode

图 4. 完全展开的提纲

Org-mode 提供了有用的快捷键来修改提纲结构。要将标题提升一级,请将光标放在标题上,然后使用快捷键 M-左(meta 键和左箭头键同时按下)。要将标题降级一级,请使用 M-右。您可以使用 M-Shift-左(Meta、Shift 和左箭头键同时按下)提升整个子树,并使用 M-Shift-右降级子树。

纯列表

有时您可能需要在子树的正文中添加一个纯列表,该列表不是文档树状结构的一部分。要添加无序纯列表,请以以下字符开头-+。要使 Org-mode 在后续列表项的开头自动添加 - 或 +,请使用 M-Return 插入下一个列表项。要添加有序列表,请以以下字符开头1.,要使 Org-mode 自动编号后续项,请使用 M-Return 插入下一个列表项。在有序列表的中间添加一个项目,Org-mode 会自动重新编号列表项。您也可以混合使用有序列表和无序列表。想要向纯列表添加复选框?以以下字符开始列表项-[ ]。您可以使用 C-c C-c 切换复选框,复选框将显示为[X](图 5)。

Get Organized with Emacs Org-mode

图 5. 纯列表

超链接

Org-mode 识别 URL 并将其转换为可点击的链接。如果 Emacs 知道您的默认 Web 浏览器,则在 Org-mode 中单击 URL 将在您的默认 Web 浏览器中打开链接。Org-mode 支持其他类型的外部链接,包括指向文件和图像的链接(图 6)。

Get Organized with Emacs Org-mode

图 6. 超链接

表格

Org-mode 包含一个表格编辑器,可以以纯 ASCII 文本格式化表格。使用 | 作为列分隔符,Org-mode 会自动重新格式化纯文本表格以重新对齐列或添加新行。使用 Tab 键移动到下一个单元格,使用 Shift-Tab 移动到上一个单元格。Org-mode 会非常方便地右对齐数字。您可以通过在单元格中插入公式在这些纯文本表格中进行电子表格计算(图 7)。

Get Organized with Emacs Org-mode

图 7. 纯文本表格

这些只是 Org-mode 如何使纯文本写作和格式化变得容易的几个示例。但是 Org-mode 最令人印象深刻的功能是那些使您能够组织和跟踪任务的功能。

标签

您可以为任何标题分配标签。标签只是以冒号开头和结尾的字母或数字。例如,:红色可能是一个标签。您可以将多个标签与单个标题关联,如:红色:绿色。标签被添加到标题的末尾。要向标题添加标签,请将光标放在标题上并键入C-c C-c。Org-mode 将提示您输入标签。

Org-mode 创建文件中所有标签的动态列表。如果您的文件中已存在标签并且想要标记标题,Org-mode 会显示已输入的标签列表。在标题上键入C-c C-c后,使用向上和向下箭头键查看正在使用的其他标签。

Get Organized with Emacs Org-mode

图 8. 标签

标签可用于建立标签系统,以关联和分组分布在整个 Org 文件中的信息。您可以使用标签来标记活动类型,例如:代码:通话。如果您正在与他人协调任务,则可以使用同事的姓名作为标签。

工作流程和待办事项列表

在 Org-mode 中,您可以在用于编写笔记或概述项目的同一文件中创建待办事项列表。这样做的好处是将任务放在整个项目的上下文中。要将标题标记为待办事项,请以单词开头标题TODO。您可以通过将光标放在标题上并键入C-c C-t来更快地完成此操作。这将添加标签TODO在标题的开头为您。相同的命令可用于在TODO完成当您完成任务时。再次使用该命令,Org-mode 将删除完成从标题中删除。

TODO完成是 Org-mode 中的标准工作流程状态,但可以配置您自己的工作流程,无论是全局的用于所有 Org-mode 文件,还是每个文件的自定义工作流程。例如,如果您想设置自定义工作流程,例如TODO --> 测试 --> 完成,请将以下内容添加到 Org 文件的顶部

#+SEQ_TODO: TODO TEST DONE
优先级

创建任务后,您需要确定其优先级。Org-mode 支持三个优先级级别:A、B 和 C。A 是最高优先级。可以通过添加[#A]到标题来设置任务的优先级。命令C-c也可以用于设置优先级。图 9 显示了使用标签、自定义待办事项工作流程和优先级的任务列表示例。

Get Organized with Emacs Org-mode

图 9. 标签、自定义待办事项工作流程和优先级

标签、自定义工作流程和优先级使 Org-mode 足够灵活,可用于多种不同的用途。很容易开发出适合项目的自定义组织系统。每个 Org 文件都可以使用不同的系统。

时间戳

要将事件或会议与 Org-mode 中的日期关联,请使用普通时间戳。您可以使用以下命令在标题或条目正文中插入普通时间戳C-c。您还可以指定日期范围。Org-mode 提供了特殊的时间戳,可用于计划和跟踪任务。要设置在特定日期开始处理条目的提醒,请在时间戳前面加上标签计划于。如果条目要在特定日期完成,请在时间戳前面加上标签截止日期。您还可以使用 Org-mode 跟踪在每个任务上花费的时间。这可以通过使用时钟标签在时间戳之前完成。Org-mode 具有键盘命令,可以轻松插入时间戳和时间戳标签。

示例

图 10 显示了一个虚构的示例,说明了 Org-mode 的一些计划和调度功能。此 Org 文件使用自定义待办事项工作流程,该工作流程在文件顶部指定。任务标有工作流程状态。主要项目阶段概述了一些计划或截止日期。标签用于标记活动类型和团队成员职责。日期和时间标记为会议。时钟时间戳用于跟踪会议花费的时间。“现场会议”条目使用日期范围,因为它跨越多个日期。高优先级和低优先级标记有助于确定任务的优先级。项目建议书、会议纪要、报告和预算电子表格都已折叠隐藏。与项目相关的所有内容都可以保存在一个文件中。

Get Organized with Emacs Org-mode

图 10. 使用 Org-mode 进行项目规划

标签搜索

由于 Org 文件可能会变得很大,因此 Org-mode 提供了生成 Org 文件的不同视图的机制,仅显示您感兴趣的信息。在图 10 中,如果您想搜索所有带有标签的条目PAT,请使用命令C-c \并输入PAT(图 11)。

Get Organized with Emacs Org-mode

图 11. 标签搜索

日程视图

Org-mode 的日程表功能提供了其他视图,例如所有待办事项的列表或类似日程表的条目及其日期显示。首先,您需要使用命令将您的 Org 文件添加到您的 Org 日程表中C-c [。然后,键入C-c a以显示不同视图的选项。例如,要查看图 10 中显示的虚构项目的待办事项列表,请键入C-c a t(图 12)。您还可以基于标签生成视图(图 13)。

Get Organized with Emacs Org-mode

图 12. 日程待办事项列表

Get Organized with Emacs Org-mode

图 13. 日程标签列表

导出和发布

Org-mode 文件是可读的,您可以直接从 Org 文件复制和粘贴文本到电子邮件消息或其他文档中。您也可以从 Org-mode 导出为其他文件格式。要将 Org 文件导出为带有目录页和自动编号标题的格式化 ASCII 文本文件,请使用命令M-x org-export-as-ascii。Org-mode 将生成一个与 Org 文件同名但扩展名为 .txt 的文件。要导出为 HTML,请使用命令M-x org-export-as-html,Org-mode 将创建一个扩展名为 .html 的文件。HTML 版本将具有超链接目录页、编号标题、格式化表格、超链接和图像(如果有)(图 14)。

Get Organized with Emacs Org-mode

图 14. 导出为 HTML 格式的 Org 文件

结论

我仅以单个 Org 文件为例介绍了 Org-mode 提供的一些功能,但 Org-mode 的功能远不止于此。您可以维护多个 Org 文件,并跨 Org 文件生成日程视图或待办事项列表。条目可以存档。Org-mode 还包括一个发布系统,可以自动生成一组相互链接的 HTML 文件并将它们上传到服务器。Org-mode 的许多行为都可以自定义。Org-mode 构建在 Emacs 核心功能之上。它还提供了与其他 Emacs 模式和软件包交互的钩子。它也可以用于实施 David Allen 的“Getting Things Done”个人生产力方法(请参阅“资源”)。我发现 Org-mode 对于记笔记、规划项目、跟踪任务和组织想法非常宝贵。

仅使用纯文本进行写作、组织、计划和调度可能看起来是一个不切实际的目标。Org-mode 迎接了挑战,并提供了实用、直观且优雅的解决方案。

资源

Emacs Wiki: www.emacswiki.org

GNU Emacs: www.gnu.org/software/emacs

Org-mode 网站: orgmode.org

Chua, S., 2005, “驯服 TODO”, Linux Journal: www.linuxjournal.com/article/8378

Cave, C., 2006, “使用 Emacs org-mode 进行 GTD”: members.optusnet.com.au/~charles57/GTD/orgmode.html

Curley, C., 2002, “Emacs 入门”, Linux Journal: www.linuxjournal.com/article/6242

Curley, C., 2004, “中级 Emacs 黑客技术”, Linux Journal: www.linuxjournal.com/article/6771

Dominik, C., 2006, “回复:另一个 GTD 问题”, Gmane: article.gmane.org/gmane.emacs.orgmode/715

Pedersen, J., 2000, “Emacs 宏和 Power-Macros 软件包”, Linux Journal: www.linuxjournal.com/article/3769

Welsh, M., 1994, “Emacs:朋友还是敌人”, Linux Journal: www.linuxjournal.com/article/2801

Abhijeet Chavan 是 Urban Insight(一家互联网咨询公司 (urbaninsight.com))的首席技术官。他也是 Planetizen (planetizen.com) 的联合创始人兼联合编辑。他使用 Org-mode 撰写了本文。

加载 Disqus 评论