Files
kernel_Notes/Zim/Utils/emacs/org-mod.txt
2012-08-08 15:17:56 +08:00

195 lines
11 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
Content-Type: text/x-zim-wiki
Wiki-Format: zim 0.4
Creation-Date: 2011-04-03T22:06:15+08:00
====== Emacs的Org Mode ======
[Org Mode]
1 介绍
2 基本用法
3 列表
4 注脚
5 表格
5.1 基本表格
5.2 spreadsheet
6 链接
7 todo list
8 导出成其他格式
9 请参考 org mode 的文档。
10 我自己的使用经验
====== 1 介绍 ======
~~~~~~~
**Org mode** 是 emacs 中的一个主模式。 Org 是 organization 的缩写。这个模式的主要作用是用来记笔记,写 todo listorg mode 有一个目标,就是希望每件事情都只记录一次。 Org mode 已经是 emacs 自带的组件,如果你想用最新的 org mode可以在这里下载[http://orgmode.org/]
===== 2 基本用法 =====
~~~~~~~~~~~
很简单,一级标题用一个星号(*)表示,二级标题用两个星号表示,三级标题用三个星号表示,以此类推,注意,**星号必须顶格写**。比如,新建一个文件,在 emacs 中打开然后敲__M-x org-mode__进入 org mode。然后在文件中写入下面的内容
* top level
** the second level
*** the third level
somethings to write
注意,**星号前不能有空格**。
然后你就可以看到这些各个等级的标题和内容被合适的高亮了。你可以自由的控制这些标题和内容是被折叠还是显示出来方法就是使用__TAB__。比如把光标移动到最开始的地方连续按TAB, org mode 会把 buffer 中的内容按照 **全部折叠->展开所有标题->展开全部内容** 这样的顺序循环显示。另外,还有一些快捷键可以帮助你方便的在 org mode 中间移动:
C-c C-n 移动到下一个标题
C-c C-p 移动到上一个标题
C-c C-f 移动到和当前标题同等级的下一个标题
C-c C-b 移动到和当前标题同等级的上一个标题
C-c C-u 向上移动到更高一层的标题
__Alt+左右方向键可以改变标题的级别__
===== 3 列表 =====
~~~~~~~
在**同一个子标题**下,你还可以将内容划分的更细致。方法是使用这些符号: __- + * 1. 1)__。注意这里的*'不能顶格写。 比如,在你的 org mode 的 buffer 中写入下面这些文字(从 org mode 手册上抄来的例子):
My favorite scenes are (in this order)
1. The attack of the Rohirrim
2. Eowyns fight with the witch king
* this was already my favorite scene in the book
* I really like Miranda Otto.
3. Peter Jackson being shot by Legolas
on DVD only
He makes a really funny face when it happens.
But in the end, no individual scenes matter but the film as a whole.
Important actors in this film are:
Elijah Wood :: He plays Frodo
Sean Austin :: He plays Sam, Frodos friend. I still remember
him very well from his role as Mikey Walsh in the Goonies.
把光标移动到 1. 2.3. 所在的行上然后按__ shift 加左右方向键__看看有什么效果。(将同一层次的列表符号循环变换)
===== 4 注脚 =====
~~~~~~~
在 org mode 中你可以为你的文章添加注脚footnote。注脚的格式有两种__一是方括号+数字,二是方括号+fn+名字__。比如下面有两个例子
在 org mode 的正文中写下这两句话:
The Org homepage__[1]__ now looks a lot better than it used to.
The Org homepage__[fn:orghome]__ now looks a lot better than it used to.
接下俩你可以写一些其他东西,然后在**文章的末尾**写上下面两句话(注意:**必须要顶格写**
[1] The link is: http://orgmode.org
[fn:orghome] The link is: http://orgmode.org
把光标移动到正文的[1]处按__ C-c C-c__可以跳转到注脚[1]处,在注脚[1]处按 C-c C-c可以跳转到正文的[1]处。对于[2]也一样。
===== 5 表格 =====
~~~~~~~
==== 5.1 基本表格 ====
=============
在 org mode 中你可以画表格。方法很简单在某一行__顶格的位置输入|'__然后输入表格第一行第一列的内容再输入|',然后输入表格的的一行第二列的内容,以此类推。当第一行输入完成后,按 __TAB__ org mode 会把当前行对齐,然后为你创造出表格的下一行,让你继续输入。用 __TAB 和 S+TAB__可以在表格中正向或反向的移动。
比如下面的例子:
| 1 | one |
| 2 | two |
| 3 | This is a long chunk of text |
| 4 | four |
有时候表格的某一项特别的长你可以在任意一个表格的__空白项内输入数字来限制其所在列的长度__。比如
| | __<6>__ |
| 1 | one |
| 2 | two |
| 3 | This=> |
| 4 | four |
在上面的例子中第二列的长度不会超过6超过的部分会被隐藏起来。你可以把鼠标移动到__This=>__上面会有浮动标签显示出该项的内容或者输入C-c `’可以编辑被隐藏的内容。如果你发现表格的某一项没有如你预期的那样被隐藏起来,你可以在表格中的任意位置按 C-c C-c
我们还可以把表格弄的更好看一些。在表格的某两行之间加入__|-__然后按__TAB__可以作出下面的效果
| | <6> |
|—+——–|
| 1 | one |
| 2 | two |
| 3 | This=> |
| 4 | four |
==== 5.2 spreadsheet ====
================
你可以在表格中增加计算的功能。比如你有这样一个表格第一列和第二列是三角形两个直角边的长度第三列是通过勾股定理计算出的斜边长度或者是这样一张表格前几列是你各个科目的考试成绩最后一列是你的平均分那么org mode 可以自动为你完成计算。我们以计算勾股定理为例,创建一张表格:
| a | b | |
|—+—+—|
| 3 | 4 | |
| 6 | 8 | |
| 1 | 2 | |
在第二行第三列中输入’=($1^2+$2^2)^0.5′。$1和$2表示第一列和第二列在你自己的表格中你会使用你希望的列数进行计算。
| a | b | |
|—+—+———–|
| 3 | 4 | 5. |
| 6 | 8 | 10. |
| 1 | 2 | 2.2360680 |
#+TBLFM: $3=($1^2+$2^2)^0.5
有时候你输入完成后org mode不会自动帮你对所有项都计算一边这时你可以输入__C-u C-c C-c__强制org mode为整个表格进行计算。如果你不想让某一列都按照公式计算只希望在某一特定项上进行计算你可以这样输入:=($1^2+$2^2)^0.5, 即在等号前再加一个冒号。
===== 6 链接 =====
~~~~~~~
你可以在 org mode 中设置连接。比如链接到当前文档的某个位置,或者链接到一个外部文件。链接到当前文档的某个位置只需这样输入:
:Linux:Utils:emacs:快捷键
description 是你希望链接到的内容org mode 会通过字符串搜索的方式找到第一个与 description 匹配的地方作为链接的目标。要链接到一个外部文件,只需这样输入:
[[file:/directory/filename]]
想要跳到链接处可以使用快捷键__C-c C-o__或者鼠标左键单击。对于到外部文件的链接emacs 会试图将该文件打开。
===== 7 todo list =====
~~~~~~~~~~~~
Org mode 的一个很重要的功能就是写 todo list。 创建一个todo list 和创建一个 org mode 的其他标题并没有什么区别。比如你可以顶格写下这样一
行:
* write org mode document
然后把光标移动到这行上按__shift+左右方向键__你会发现该条目会在 TODO和 DONE 之间切换:
* TODO write org mode document
* DONE write org mode document
这就是最简单的 todo list 了,想做什么,就在 org mode 下创建一个条目,并将其状态设置为 TODO做完后将其状态设置为 DONE。
todo list **默认只有两种状态** TODO 和 DONE。我们可以再增加一些其他状态。比如在.emacs中加入下面的语句:
(setq org-todo-keywords
'((sequence "TODO" "DOING" "HANGUP" "|" "DONE" "CANCEL")))
可以将 todo list 的状态增加为五种TODODOINGHANGUPDONECANCEL。
注意,在 HANGUP 和 DONE 之间有一条竖线 “|”在竖线之前的状态和之后的状态使用的是不同的face。
进一步的,我们还可以记录切换到某一种状态时的时间:
(setq org-todo-keywords
'((sequence "TODO(t)" "DOING(i!)" "HANGUP(h!)" "|" "DONE(d!)" "CANCEL(c!)")))
在 DOING HANGUP DONE 和 CANCEL 后的括号中都有一个’!',这种写法表示**进入到这些状态后会记录下当前时间**。而每个状态后面的括号中都有一个字母这个__字母就是进入该状态的快捷键__。当你想切换到某一状态时可以输入__C-c C-t__此时 emacs 会弹出一个提示窗口__然后输入对应的快捷键__就可以把当前的条目设置为该状态。
主意,改变 org-todo-keywrods 之后,最好把你的 org mode 的文件关闭,然后在重新打开,否则可能会发现设置无效。
===== 8 导出成其他格式 =====
~~~~~~~~~~~~~~~~~
已经编辑好的 org mode 文档可以导出为其他格式。
__C-c C-e a __导出为文本文件。
__C-c C-e h__ 导出为 HTML 文件。
===== 9 请参考 org mode 的文档 =====
~~~~~~~~~~~~~~~~~~~~~~~~~~~
实际上 org mode 提供的功能极其繁多。我在上面列出的只是我日常会用到的功能。 Org mode 还有很多我这篇文章中完全没有涉及的功能,而我涉及到的功能,也有许多细微的技巧没有提及。幸运的是, org mode 有一份极其详尽的文档。你可以在 emacs 中输入 __C-h i__然后搜索 __org mode__找到该文档。想充分发挥出 org mode 的威力,需要仔细阅读这份文档。
===== 10 我自己的使用经验 =====
~~~~~~~~~~~~~~~~~~~~
==== 1. 记 todo list。 ====
把我工作中要做的事情和自己想学的东西都列出来,并且使用前面提到的功能记录下每件事情的起始时间和结束时间,即 DOING 和DONE 的时间,以此推算出这件事情究竟花费多少时间。我是搞 IT 行业的经常会遇到任务完不成需要加班的情况。我希望通过记录下我完成每件事情的时间来得到一份第一手资料用来推断以后遇到的工作所花费的时间。这样无论是boss 给我安排任务,还是我给别人安排任务,都可以做到心中有数。
==== 2. 记笔记。 ====
工作中,领导有要求记工作笔记,把工作中遇到的问题和解决办法记录下来。平常在网上查到的资料,也可以随手建立一个条目,粘贴上去。
==== 3. 写文档。 ====
我个人认为 org mode 不适合写很长很复杂逻辑性很强的文档那是tex 的范畴。不过相对简单的文档,比如工作报告,用 org mode 写,再生成文本文档,效果还是不错的。
实际上,本文基本涵盖了我所用到的 org mode 的功能。我曾经通读过 org mode 的文档。开始我读的很兴奋,因为看到了很多让我眼花缭乱的功能。但后来我就感到困惑了,因为那么多功能,如果我都用上的话,反而会把事情变得很繁琐。最后,我选择了一些最基本最简单的功能,用来辅助我的日常工作(也就是我本文中介绍到的功能)。但我总是想,那些我没用到的功能,也许只是我没有好的思路来使用而已。所以,如果有谁有好的 org mode 的使用思路,请一定要不吝赐教。
最后,我习惯让扩展名为.org的文件打开后默认进入 org mode只需在.emacs 中加入:(emacs 23已默认可以不需要加)
(add-to-list 'auto-mode-alist '("\\.org\\'" . org-mode))