mirror of
https://github.com/beyondx/Notes.git
synced 2026-02-06 11:53:55 +08:00
195 lines
11 KiB
Plaintext
195 lines
11 KiB
Plaintext
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 list,org 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. Eowyn’s 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, Frodo’s 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 的状态增加为五种:TODO,DOING,HANGUP,DONE,CANCEL。
|
||
注意,在 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))
|