写在开始
本文翻译自 http://doc.norang.ca/org-mode.html,原文作者为Bernt Hansen 。由于原文较长,因此会分多篇文章来发布。转载请标记出处。
使用Emacs也有几年时间了,org mode平时工作生活中也会用到,原文中提到的capture,任务管理,归档,发布导出等功能或多 或少有所使用,但是通读这篇文章后,还是收获颇多,所以趁着放假,花了些时间把全文翻译了下,以供后续继续学习。
Emacs org mode非常强大,可以说熟练使用org mode,可以替换微软的office 全家桶(word, powerpoint, excel). 当Emacs配合plantuml,可以完全替代各种UML绘图软件(viso,startuml)。Emacs + org + github(git) 就可以搭建 自己的“印象笔记”。
Emacs其实不仅仅是代码编辑器,当然Emacs也是非常适合来阅读管理源码;当学会org mode后,Emacs就不局限在代码编辑器范畴, 可以绘图,可以写文章,可以做翻译(本文也是在org mode文件中翻译完成,通过org tangle来生成的),可以说学会Emacs,终生受益。
原文包含20节一级标题,详情如下:
前三节比较简单,主要介绍些背景以及声明文档的版权等(待所有翻译发布后,会将翻译上传到github上), 从第四节开始才进入正题。
因此将前四节合为一篇文章来发布.
由于水平有限,错误在所难免,欢迎指正!
正文开始:
1 如何使用该文档
在使用该文档时,假设你已经对org-mode有一些了解,比如agenda,capture模式等。这样就不会对org-mode太陌生。更多org-mode相关的信息 可以参考Org-Mode使用手册 也可以通过浏览Worg Site网站来获取。
我一直使用org-mode作为个人信息管理工具多年了。刚开始只是少量使用 TODO
和 DONE
这些关键字。随着时间推移,我又做了一些针对自己工作流的定制化, 所有的这些定制化都包含在这篇文档中。
我也会经常修改自己的工作流程,并且尝试些新奇的功能。本文将主要包含的则是我当 前使用的比较成熟的org-mode设置。我会每隔30天来将新尝试的工作流设置修改更新 到这个文档中(假设在此期间这些设置还在使用)因此,通过这种方式保证新的流程 能够有机会变得成熟。
本文是通过org 文件编写,可以在emacs中打开该文件,通过执行tangle的快捷键 C-c C-v C-t
在当前目录生成elisp脚本文件org-mode.el。tangle 命令将会提取所有 elisp 代码段到该lisp文件中,因此可以在你的.emacs配置文件引用这些配置, 从而能够快速 使用这些配置。
2 版权
Copyright (C) 2013 Bernt Hansen. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. Code in this document is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This code is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
本文http://doc.norang.ca/org-mode.html(无论是HTML format 还是Org format)都是遵循GNU自由文档协议1.3或者以上版本。
而所有代码示例以及CSS风格代码段都是遵循GNU General Public License v3或者以上版本。
3 修改记录 - 一些新东西
本文档版本信息可以通过调用获取.本文由 org-mode
自带 的发布功能生成,org mode版本库通过获取.
本文源代码可从文本org文件获取。我会争取 每个月更新一次该文档。
所有文档的修改记录可以从如下链接获取:git://git.norang.ca/org-mode-doc.git.
4 开始
org-mode
非常容易入门。你所需要做的就是在emacs配置文件添加几行配置就可以使用 git
仓库中 最新的org-mode了。
4.1 通过Git来安装org-mode
我通常会在本地=~/git/log-mode/=下克隆一份 org-mode源码。克隆源码命令如下:
cd ~/git
git clone git://orgmode.org/org-mode.git
可以通过如下命令来获取并编译org-mode开发者提交的最新的更新:
cd ~/git/org-mode
git pull
make uncompiled
我通常在设置中使用没有编译的源码,因此未编译的 make
目标已经足够使用了。
通常本地的org仓库源码跟踪远程仓库的 master
分支的更新。
4.2 Org-Mode 设置
如下的在我.emacs配置文件中的代码段,在我大部分的缓冲区都开启了=org-mode=。对于后缀为 .org
, .org_archive
以及 .txt=文件, =org-mode
是默认的应用模式。
;;;
;;; Org Mode
;;;
(add-to-list 'load-path (expand-file-name "~/git/org-mode/lisp"))
(add-to-list 'auto-mode-alist '("\\.\\(org\\|org_archive\\|txt\\)$" . org-mode))
(require 'org)
以上就是所有开始阶段你需要做的配置来在org-mode中使用标题以及列表。
本文其他的部分,将描述我定制化的设置,我如何来组织org-mode相关的文件,以及一些为 了更符合我的工作习惯而做的修改。
4.3 用org文件来管理日常
任务可以被分解为多个逻辑组或者项目。可以用不同的org文件来管理大的任务组 可以通过不同子目录来组织管理隶属于不同项目的多个文件。
如下是我在生活中使用的文件。
如下的org 文件来管理与工作无关的任务:
Filename | Description |
---|---|
todo.org | Personal tasks and things to keep track of |
gsoc2009.org | Google Summer of Code stuff for 2009 |
farm.org | Farm related tasks |
mark.org | Tasks related to my son Mark |
org.org | Org-mode related tasks |
git.org | Git related tasks |
如下的org文件则来管理org capture相关的记录以及任务:
Filename | Description |
---|---|
refile.org | Capture task bucket |
如下是工作相关的org文件,来跟踪工作相关的记录以及事件(描述中的真实客户名称已 经被隐藏)
Filename | Description |
---|---|
norang.org | Norang tasks and notes |
XYZ.org | XYZ Corp tasks and notes |
ABC.org | ABC Ltd tasks |
ABC-DEF.org | ABC Ltd tasks for their client DEF Corp |
ABC-KKK.org | ABC Ltd tasks for their client KKK Inc |
YYY.org | YYY Inc tasks |
在处理多个客户以及多个客户相关项目时org-mode让我得心应手。一个org文件就可以记录 完成一个客户以及一个项目所有信息。
如上表,我负责客户ABC公司多个系统。将不同客户分到不同的org文件管理,能够保持所有 事情更加具有逻辑性,也方便在org agenda中过滤以及添加需要显示在agenda视图中的信息。其他的org文件只用作发布,这些文件并不会添加到org agenda管理范畴,更多细节,可以参考后续的发布导出章节.
4.4 日程表设置
下面是我当前的=org-agenda-files=配置。
(setq org-agenda-files (quote ("~/git/org"
"~/git/org/client1"
"~/git/client2")))
org-mode
可以通过快捷键 C-c [
以及 = C-c ]= 来配置变量 org-agenda-files
变量, 从而可以增加以及删除agenda管理文件。但是这些命令会将我的默认配置的路径列表替换成 文件,我并不希望这样,因为如果这样,后面在这些路径添加的文件将不会自动纳入agenda管理。这样会导致有些文件没法通过agenda跟踪,从而导致自己错过一些非常重要的提醒。
我现在已经将快捷键 C-c [
以及 C-c ]
在 org-mode-hook
中禁用了,这样就可以阻止 上面提到情况发生。通常我只会手工对 org-agenda-files
变量设置路径参数。但是 修改这个变量中路径情况还是很少发生的,因为只要添加新文件到这些已经存在的路径,这些 文件就会被agenda自动管理起来。
我同时也会禁用注释快捷键 C-c ;
因为从来不用它。但是有时候在我编辑代码块时候, 会不小心误碰,因此把它禁用了。
上个例子中,我把路径 ~/git/client2
放到另一个叫 ~/git/org的git仓库中。这样 我就可以用它来处理一些个人的事情。我会在不同的机器上同步这些信息,如果在非该客户 机器上,我会跳过这些隐私信息。我会在不同机器上同步我个人信息,但是并不会同步客户 相关信息,所以 org-agenda-files
在自己机器上并不会包含 ~/git/client2
目录。
4.5 Org文件结构
大部分我的org文件第一层作为标题来对任务项目分类。任务以及项目从第二层开始。
这是我org file第一层标题示例
todo.org
:
-
Special Dates
Includes level 2 headings for
-
Birthdays
-
Anniversaries
-
Holidays
-
-
Finances
-
Health and Recreation
-
House Maintenance
-
Lawn and Garden Maintenance
-
Notes
-
Tasks
-
Vehicle Maintenance
-
Passwords
norang.org
:
-
System Maintenance
-
Payroll
-
Accounting
-
Finances
-
Hardware Maintenance
-
Tasks
-
Research and Development
-
Notes
-
Purchase Order Tracking
-
Passwords
第一层任务通常都会设置 property drawer
用来指定该任务在该类型树中的分类。通常我的org文件第一层标题设置如下
* Health and Recreation :PROPERTIES: :CATEGORY: Health :END: ... * House Maintenance :PROPERTIES: :CATEGORY: House :END:
4.6 按键绑定
由于我高度依赖agenda.为使得能够更快速启动agenda, 我又将 F12
也绑定到 org-agenda
功能上, 这样会比 C-c a
更加快速,由于我每天会查看agenda上百次,这样节省了很多时间。
按键 | 功能 | 频率 |
---|---|---|
F12 | 日程 (比 C-c a 少按一个键 ) | Very Often |
C-c b | 切换到org 文件 | Very Often |
F11 | 切换到下一个计时任务(需要STARTED状态) | Very Often |
C-c c | 捕获事件 | Very Often |
C-F11 | 任务启动计时 | Often |
f9 g | Gnus - 经常需要检查邮件 | Often |
f5 | 显示所有todo状态的任务 | Often |
S-f5 | Widen | Often |
f9 b | bbdb快捷键 | Often |
f9 c | 日历快捷键 | Often |
C-S-f12 | 保存并发布项目 | Often |
C-c l | 将链接存储,并作为候选 | Often |
f8 | 查看下个agenda文件 | Sometimes |
f9 r | 引用选择区域(note:没有这个函数) | Sometimes |
f9 t | 插入非激活状态时间(note:没有这个函数) | Sometimes |
f9 v | 切换选择模式 (显示和编辑链接) | Sometimes |
C-f9 | 上个缓冲区 | Sometimes |
C-f10 | 下个缓冲区 | Sometimes |
C-x n r | 限定显示区域(note:widen反操作) | Sometimes |
f9 f | 引用插入文件 | Sometimes |
f9 i | 显示消息 | Sometimes |
f9 I | 批量计时(note:没有这个函数) | Sometimes |
f9 O | 批量取消计时(note:没有这个函数) | Sometimes |
f9 o | 启动草稿模式 | Sometimes |
f9 s | 切换到草稿模式 | Sometimes |
f9 h | 隐藏其他任务 | Rare |
f7 | 切换行分割 | Rare |
f9 T | 切换激活时间戳 | Rare |
C-c a | 启动日程 (减少emacs 测试) | Rare |
<未完待续>
更多资讯,可以关注如下微信公众号: