Org-mode, 用文本文件管理日常(一)
1 写在开始
本文翻译自 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节一级标题,详情如下:
![](http://img.hfwlcm.com/uploads/allimg/20230503/h5g0jgpfyjl.png)
前三节比较简单,主要介绍些背景以及声明文档的版权等(待所有翻译发布后,会将翻译上传到github上), 从第四节开始才进入正题。
因此将前四节合为一篇文章来发布.
由于水平有限,错误在所难免,欢迎指正!
2 如何使用该文档
在使用该文档时,假设你已经对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配置文件引用这些配置, 从而能够快速 使用这些配置。
3 版权
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或者以上版本。
4 修改记录 - 一些新东西
本文档版本信息可以通过调用获取.本文由 org-mode 自带 的发布功能生成,org mode版本库通过获取.
本文源代码可从文本org文件获取。我会争取 每个月更新一次该文档。
所有文档的修改记录可以从如下链接获取:git://git.norang.ca/org-mode-doc.git.
5 开始
org-mode 非常容易入门。你所需要做的就是在emacs配置文件添加几行配置就可以使用 git 仓库中 最新的org-mode了。
5.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 分支的更新。
5.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\\)#34; . org-mode))
(require 'org)
以上就是所有开始阶段你需要做的配置来在org-mode中使用标题以及列表。
本文其他的部分,将描述我定制化的设置,我如何来组织org-mode相关的文件,以及一些为 了更符合我的工作习惯而做的修改。
5.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管理范畴,更多细节,可以参考后续的发布导出章节.
5.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 目录。
5.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:
5.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 |
<未完待续>
[注:本文部分图片来自互联网!未经授权,不得转载!每天跟着我们读更多的书]
互推传媒文章转载自第三方或本站原创生产,如需转载,请联系版权方授权,如有内容如侵犯了你的权益,请联系我们进行删除!
如若转载,请注明出处:http://www.hfwlcm.com/info/118295.html