[emacs] 为什么说org-mode是个神器

Org-Mode 是Emacs上的一个扩展包,算是个神器。概括地说,它是一种major mode,可以让用户编写结构 化带有格式的文档——不过是用带有简单标记的纯文本来表达格式的,这点跟markdown和restructuredtext有 点像。

但这个东西却是一个神器,你可以用它来写文档、写博客、写胶片、记笔记,甚至GTD、电子表格,甚至编写代码!

1 写文档

1.1 相对其它的文字处理程序而言,org-mode优点是:

  • 采用纯文本记录内容,你完全可以将文档纳入svn/git管理
  • 分节、列表的创建和导航都相当简单方便(你有没有在MS Word里面调整章节号死活调不对的经历?),一个 简单的tab键即可折叠起不关注的章节
  • 调整分节、列表的顺序相当方便:你不需要来回剪切、粘贴,你只需要M-up/down/left/right就可以了
  • 内嵌的代码片段也支持代码高亮哦,多种语言的代码/配置文件集于一处
  • 可嵌入图片、链接
  • 可以嵌入表格,甚至是带公式的电子表格
  • 可导出为HTML、Latex、DocBook等格式,后两种还可以进一步变成PDF格式

1.2 入门指导

Emacs中文网上的这篇Emacs的Org Mode包含了一些基本的入门知识: * 文档结构: 基本的分级标题、列表 * 添加脚注 * 表格 * 引用文字和代码 * 插入图片、链接

一些示例: [Emacs中文网(emacser.com)]的很多文章都是以org-mode文档投稿的,站长ahei把它们都放在 这个googlecode仓库里 了, 前面说的Emacs的Org Mode这篇文章的源文件就在这里, 各位可以对照着看看。

1.3 写博客

1.4 写胶片

1.5 一些高级用法

  • EMACS ORG-INFO.JS: 简单地在你的org文件头部添加 #+INFOJS_OPTS: view:info 然后你导出的HTML文件就可以呈现为texinfo的风格了:每次呈现一节, 按n显示下一节,按C显示目录,按i显示tags index... ([EMACS ORG-INFO.JS]这个页面就是用这种方式生成的,你 不妨点击它页面上的 HELP / toggle view 两个链接试试效果)
  • 嵌入UML diagram: Emacs中绘图 - ditaa篇 | Emacs中文网

1.6 (从格式上比较)跟markdown/ReST的区别

  • 内嵌的代码片段也支持代码高亮
  • 支持表格(不过ReST也支持)

2 记录笔记

3 作为GTD工具,跟踪待办事宜

个人对这个方面没有太大兴趣,所以没有深入折腾,下面列一些链接:

4 Literate Programming

Literate Programming是一种编程方法,是大名鼎鼎的高德纳发明的,我不知道怎么翻译,维基百科上翻译 为"文学编程", 我觉得也不是太恰当。大体的思想是: 将代码、设计文档都所有与一个项目相关的内容 都放在一个文件里,以一种与编程语言无关的结构化方式来表达整体的结构。

—— 估计还是没说清楚, 不过大家可以看看维基上举的例子。 另外ZoomQuiet一直在Leo编辑器 上 实践这种编程方式,他的wiki上也有相关介绍。 另一个介绍材料: 这个 IBM developerWorks - 点评 Python IDE 也有一段都有介绍Leo的文字。

org-mode不仅仅是可以用结构化的方式来存放代码块,而是可以执行这些代码块 (Evaluating code blocks - The Org Manual),并且可以将执行结果更新到org文档中去 (Results of evaluation - The Org Manual),还支持在一份org文档中同时使用多种编程语言 (Languages - The Org Manual)。

4.1 用org-mode管理你的dotemacs

这是org-babel的一个典型用途。这里有一份按org-mode方式改写的emacs-starter-kit: emacs24-starter-kit。 可供各位参考。

简单的步骤说明如下: 1. 新建立一个dotemacs.org文件,在这个文件里,你可以详细地用文档的形式来描述你的配置分类、注释, 将原来~/.emacs或者~/.emacs.d/init.el里面的elisp代码挪放到若干个#+begin_src#+end_src之间就可以了; 2. 在~/.emacs或者~/.emacs.d/init.el里加载dotemacs.org里面的配置: (add-to-list 'load-path "/somewhere/storing/org-mode/lisp") (require 'org-install) (require 'ob-tangle) (org-babel-load-file "~/.emacs.d/dotemacs.org")

详细一点的说明请看这里: Emacs Initialization with Babel. 或者参考上面的[emacs24-starter-kit].

5 其它用法

posted @ 2012-05-12 22:21  巴蛮子  阅读(14472)  评论(4编辑  收藏  举报