快捷搜索:

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节一级标题,详情如下:

前三节比较简单,主要介绍些背景以及声明文档的版权等(待所有翻译发布后,会将翻译上传到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