[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 写胶片
- Writing Non-Beamer presentations in org-mode
- twada/org-html5presentation.el
- takaishi/org-simple-presentation
- sigma/org-s5
- relevance/org-html-slideshow
- org-tree-slide.el: A presentation tool for org-mode - GitHub
- epresent: Simple presentation mode for Emacs Org-mode - GitHub
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 记录笔记
- Outlining Your Notes with Org | sacha chua - living an awesome life
- 给一则笔记添加标签(tags): Setting tags - The Org Manual, 然后还可以按tags搜索笔记: Tag searches - The Org Manual
-
你可以在Emacs中编辑其它文档/其它代码时,“捕捉"(capture)一段文字/一个想法/一段比较到你的笔记 本里面去: Using capture - The Org Manual
-
你可以在Firefox/Opera浏览器、Acrobat Reader里面根据当前正在阅读的内容”捕捉“一条笔记: org-protocol.el – Intercept calls from emacsclient to trigger custom actions
3 作为GTD工具,跟踪待办事宜
个人对这个方面没有太大兴趣,所以没有深入折腾,下面列一些链接:
- TODO Items - The Org Manual
- Dates and Times - The Org Manual
- Agenda Views - The Org Manual
-
MobileOrg - The Org Manual 将你的笔记/待办事宜在Emacs与iPhone/Android之间同步(需要在手机上安装MobileOrg这个应用)
[http://images.macworld.com/appguide/images/335/805/599/ss0.jpg] [http://images.macworld.com/appguide/images/335/805/599/ss2.jpg]
- Using Emacs org-mode for GTD
- Using org-mode as a Day Planner | Lost in Technopolis
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)。
- literate programming with org-babel
- Literate programming in emacs
- Running Python and R inside Emacs — The Endeavour
- A Multi-Language Computing Environment for Literate Programming and Reprodu
- 嵌入diagram图: [Emacs中绘图 - ditaa篇 | Emacs中文网] (http://emacser.com/emacs-ditaa.htm )
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].