神器中的神器org-mode之入门篇

1 本文参考

2 简介

Org-Mode:Your Life in Plain Text. html

Org-模式(Org-mode)是文本编辑软件Emacs的一种支持内容分级显示的编辑模式。这种模式支持写 to-do 列表,日志管理,作笔记,作工程计划或者写网页。好比,todo 列表能够给每一件事分别赋上不一样的优先级和最后完成期限,每个 todo 项目又能够细分红次级 todo 列表或者核对表,并且每个项目还均可以分别加标签或者属性。除此以外,org-模式还能够自动生成某一段时间之内的日程表。 node

我开使用主要的被所见所得,只专一与本身的思绪的神奇之处所吸引。至于高手们所说的种种其实都尚未概念,我相信经过不断深刻的学习,我也会发出这样的惊叹:太TM的太神奇了。 linux

3 安装及简单配置

Emacs23以后已经默认包含有org-mode模式了,可是网上都说新版的比较好,我因而就下了个目前最新的稳定版,解压到site-lisp目录下后,在.emacs中配置以下: c++

1: ;;;;;配置org-mode 2: (setq load-path (cons "E:/emacs-23.4/site-lisp/org-7.8.11/lisp" 3:  load-path)) 4: (require 'org-install)

如今若是你新建一个.org格式的文件,若是在minibuffer中显示Org的字样,就意味着你已经成功了。 git

4 简单操做

4.1 标题

文章中的标题能够经过 #+TITTLE: 来设置标题。如: web

#+TITLE: 神器中的神器org-mode之入门篇

正文中的标题能够经过*,后面要有空格,而后再输入想要的标题就能够了。一个*表示一级,两个*表示二级标题。(最多10个*)。 数据库

4.2 段落

这里与咱们想象的很不同,再win下只要你Enter,就换行成为新的一段了。可是这里要开始新的段落须要回车两次,当你回车一次,当你发布时,只至关于中间有个空格而已。还有一种方法就是在须要空格的地方输入\\。  浏览器

段落一

段落二\\
段落三

4.3 字体

*粗体*
/斜体/
+删除线+
_下划线_
下标: H_2 O(这里必须留一个空格要否则2和O都成为小标,目前还不知道怎么去掉空格)
上标: E=mc^2
等宽字:  =git=

效果为: 粗体 
斜体 
删除线 
下划线 
下标:H2 O 
上标:E=mc2 
等宽字: git  服务器

4.4 列表

  1. 这里有有序和无序两种,还有一种描述列表。
    • 无序列表以'-'、'+'或者'*'开头
    • 有序列表以'1.'或者'1)'开头
    • 描述列表用'::'
  2. 注意事项
    • 列表符号后面都要有空格
    • 同级别的列表缩进要相同
    • 若是想要加入同级别的列表,能够 M-RET
    • 空两行以后列表结束,若是空一行执行M-RET,实际上仍是输入同级项

4.4.1 示例:

**** Lord of the Rings
   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.
ORG-LIST-END-MARKER
   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.
ORG-LIST-END-MARKER
  • Lord of the Rings 
    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. app

    But in the end, no individual scenes matter but the film as a whole. Important actors in this film are:

    Elijah WoodHe plays FrodoSean AustinHe plays Sam, Frodo's friend. I still remember him very well from his role as Mikey Walsh in The Goonies.

4.4.2 列表/标题快捷键

  • 折叠
快捷键 说明
S-TAB 循环切换整个文档的大纲状态(折叠、打开下一级、打开所有)
TAB 循环切换光标所在的大纲状态
  • 大纲或者列表之间移动
快捷键 说明
C-c C-n/p 移动到下上一个标题(不断标题是哪一级)
C-c C-f/b 移动到同一级别的下/上标题
C-c C-u 跳到上一级标题
C-c C-j 切换到大纲预览状态
  • 基于大纲/标题的编辑
快捷键 说明
M-RET 插入一个同级别的标题
M-S-RET 插入一个同级别的TODO标题
M-LEFT/RIGHT 将当前标题升/降级
M-S-LEFT/RIGHT 将子树升/降级
M-S-UP/DOWN 将子树上/下移动
C-c * 将本行设为标题或者正文
C-c C-w 将子树或者区域移动到另外一个标题处(跨缓冲区)
C-c C-x b 在新缓冲区显示当前分支
C-c / 只列出包含搜索结果的大纲,并高亮,支持多种搜索方式

4.5 嵌入元数据

4.5.1 内容元数据

org-mode中有如下几种

s    #+begin_src ... #+end_src 
e    #+begin_example ... #+end_example  : 单行的例子以冒号开头
q    #+begin_quote ... #+end_quote      一般用于引用,与默认格式相比左右都会留出缩进
v    #+begin_verse ... #+end_verse      默认内容不换行,须要留出空行才能换行
c    #+begin_center ... #+end_center 
l    #+begin_latex ... #+end_latex 
L    #+latex: 
h    #+begin_html ... #+end_html 
H    #+html: 
a    #+begin_ascii ... #+end_ascii 
A    #+ascii: 
i    #+index: line 
I    #+include: line
  • 代码 
    上面的单字母为快捷键字母,如输入一个<s 而后TAB后就变为:
    #+begin_src 
    
    #+end_src

    怎么样,这样是否是就很方便了。 
    上面的代码咱们还能够加入一些参数,如

    #+begin_src c -n -t -h 7 -w 40
    
    #+end_src
    其中:
    c为所添加的语言
    -n 显示行号
    -t 清除格式
    -h 7 设置高度为7 -w 40设置宽度为40
  • 注释 
    以‘#‘开头的行被看做注释,不会被导出区块注释采用以下写法:
    #+BEGIN_COMMENT
      块注释
      ...
     #+END_COMMENT
  • 表格与图片 
    对于表格和图片,能够在前面增长标题和标签的说明,以方便交叉引用。好比在表格的前面添加:
    #+CAPTION: This is the caption for the next table (or link)

    则在须要的地方能够经过

    \ref{table1}

    来引用该表格。

  • 嵌入html 
    对于导出html以及发布,嵌入html代码就颇有用。好比下面的例子适用于格式化为cnblogs的代码块:
    #+BEGIN_HTML
      <div class="cnblogs_Highlighter">
      <pre class="brush:cpp">
      int main()
      {
        return 0;
      }
      </pre>
      </div>

    至关于在cnblogs的网页编辑器中插入"c++"代码。

  • 包含文件 
    当导出文档时,你能够包含其余文件中的内容。好比,想包含你的“.emacs”文件,你能够用:

    #+INCLUDE: "~/.emacs" src emacs-lisp 
    可选的第二个第三个参数是组织方式(例如,“quote”,“example”,或者“src”),若是是 “src”,语言用来格式化内容。组织方式是可选的,若是不给出,文本会被看成 Org 模式的正常处理。用 C-c ,能够访问包含的文件。

4.5.2 文档元数据

具体的内容能够到文档中查看:Export options 咱们除了手动添加上面的元数据外,还能够用快捷键 C-c C-e t 插入选项,其中可能有些选项咱们须要常常用到:

H: 标题层数
num: 章节(标题)是否自动编号
toc: 是否生成索引
creator: 是否生成 "creat by emacs…"
LINKUP: UP: 连接
LINKHOME: HEME: 连接

4.6 表格

org-mode里制做表格灰常灰常强大,其实我最初看了视频才开始动心学org-mode的。

4.6.1 创建和操做表格

在 org mode 中,你能够画表格。方法很简单,在某一行顶格的位置输入’|',而后输入表格第一行第一列的内容,再输入’|',而后输入表格的的一行第二列的内容,以此类推。当第一行输入完成后,按 TAB, org mode 会把当前行对齐,而后为你创造出表格的下一行,让你继续输入。用 TAB 和 S+TAB能够在表格中正向或反向的移动。 

  • 好比下面的例子:
#+CAPTION: 表格的标题
| 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   |

4.6.2 快捷键

  • 总体区域
操做 说明
C-c 竖线 建立或者转化成表格
C-c C-c 调整表格,不移动光标
TAB 移动到下一区域,必要时新建一行
S-TAB 移动到上一区域
RET 移动到下一行,必要时新建一行
  • 编辑行和列
快捷键 说明
M-LEFT/RIGHT 移动列
M-UP/DOWN 移动行
M-S-LEFT/RIGHT 删除/插入列
M-S-UP/DOWN 删除/插入行
C-c - 添加水平分割线
C-c RET 添加水平分割线并跳到下一行
C-c ^ 根据当前列排序,能够选择排序方式

4.6.3 表格中的计算

例如一张价格表:

数量 单价 总额
2 3.45  
4 4.34  
5 3.44  
5 5.6  
在第二行第三列中输入'=$1*$2′。$1和$2表示第一列和第二列,在你本身的表格中,你会使用你但愿的列数进行计算。
| 数量 | 单价 |  总额 |
|------+------+-------|
|    2 | 3.45 |   6.9 |
|    4 | 4.34 | 17.36 |
|    5 | 3.44 |  17.2 |
|    5 |  5.6 |   28. |
#+TBLFM: $3=$1*$2

你能够输入’C-u C-c C-c’强制org mode为整个表格进行计算。若是你不想让某一列都按照公式计算,只但愿在某一特定项上进行计算,你能够这样输入:':=$1*$2′, 即在等号前再加一个冒号。

4.7 链接

在一个连接上按C-c C-o便可访问,至于调用什么程序访问,取决于连接的内容,emacs和org mode的配置了。

4.7.1 自动链接

对于符合连接规则的内容,org-mode会自动将其视为连接,包括括文件、网页、邮箱、新闻组、BBDB 数据库项、 IRC 会话和记录等。下面是一些例子:

http://www.astro.uva.nl/~dominik            on the web
file:/home/dominik/images/jupiter.jpg       file, absolute path
/home/dominik/images/jupiter.jpg            same as above
file:papers/last.pdf                        file, relative path
file:projects.org                           another Org file
docview:papers/last.pdf::NNN                open file in doc-view mode at page NNN
id:B7423F4D-2E8A-471B-8810-C40F074717E9     Link to heading by ID
news:comp.emacs                             Usenet link
mailto:adent@galaxy.net                     Mail link
vm:folder                                   VM folder link
vm:folder#id                                VM message link
wl:folder#id                                WANDERLUST message link
mhe:folder#id                               MH-E message link
rmail:folder#id                             RMAIL message link
gnus:group#id                               Gnus article link
bbdb:R.*Stallman                            BBDB link (with regexp)
irc:/irc.com/#emacs/bob                     IRC link
info:org:External%20links                   Info node link (with encoded space)

对于文件连接,能够用::后面增长定位符的方式连接到文件的特定位置。定位符能够是行号或搜索选项。如:

file:~/code/main.c::255                     进入到 255 行
file:~/xx.org::My Target                    找到目标‘<<My Target>>’
file:~/xx.org/::#my-custom-id               查找自定义 id 的项

4.7.2 手动链接

[[link][description]]
[[link]]

4.7.3 内部链接

内部连接就相似于HTML的锚点(实际上export成HTML文件后就变成了锚点),能够实如今一个文档内部的跳转。以下命令定义了一个名为target的跳转目标:

#<<target>> (这里我把锚点设置到*链接*这一部分开始处,你们能够点击下面效果中两个链接试试效果)
以下方式能够设置到target的连接:
[[target]] 或 [[target][猛击锚点]]

效果为: target 或 猛击锚点

4.7.4 其余经常使用的链接命令

C-c l 能够在光标所在处建立一个跳转目标点,在须要跳转至该目标的位置输入命令C-c C-l能够创建到目标的连接当输入C-c C-l命令,光标若处在已经存在的一个连接上的时候,能够编辑改连接。命令C-c %能够记录当前光标所在位置,当光标移到其余地方后,能够用C-c &跳转回来。这里的位置记录相似一个 kill-ring,重复输入C-c %能够记录多个位置,重复输入C-c &能够连续跳转到以前记录的对应位置上。

4.8 注脚

在 org mode 中,你能够为你的文章添加注脚(footnote)。注脚的格式有两种,一是方括号+数字,二是方括号+fn+名字。好比下面有两个例子:在 org mode 的正文中写下这两句话:

The Org homepage1 now looks a lot better than it used to. The Org homepage2 now looks a lot better than it used to.

插入脚注:C-c C-x f 接下俩你能够写一些其余东西,而后在文章的末尾写上下面两句话(注意:必需要顶格写):

[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 处。

4.9 分割线

五条短线或以上显示为分隔线。

-----

4.10 标签tag

对于信息的管理,有分类(category)和标签(tag)两种方式。这两种方式各有特色:

一般分类是固定的,不多变化,而tag随时能够增长。 分类一般表现为树状结构,比较清晰,可是树状结构过于简单,不能表达复杂的信息。好比,若是有多个分类树,处理起来就会比较麻烦。

因此,这两种方式一般结合起来使用。好比blog系统中,一般既支持文章的分类(树),又支持为每篇文章做tag标记。

org-mode做为最好的文档编辑利器 ,在支持文内大纲(也是树状结构)的同时,还方便的支持tag功能。tag能够在多篇文档中共用。

简单的说:分类就如同我博客分为c++、emacs、linux等一些列类别,可是个人每篇博文都会根据不一样的内容设置 不一样的标签。

4.10.1 标记tags

若是但愿文档中的全部标题都具备某些标签,只须要定义文档元数据:

#+FILETAGS: :Peter:Boss:Secret:

更方便的作法是在正文部分用C-c C-q 或直接在标题上用C-c C-c建立标签,这种方式能够

4.10.2 预约义tags

上面提到,除了能够输入标签外,还能够从预约义的标签中进行选择。若是手工输入标签,在标题后设置标签,键入:后,M-Tab自动提供标签的补齐。预约义的方式有两种:

-1. 在当前文件头部定义这种方式预约义的标签只能在当前文件中使用。使用#+TAGS元数据进行标记,如:

#+TAGS: { 桌面(d) 服务器(s) }  编辑器(e) 浏览器(f) 多媒体(m) 压缩(z)

每项之间必须用空格分隔,能够在括号中定义一个快捷键;花括号里的为标签组,只能选择一个

对标签订义进行修改后,要在标签订义的位置按 C-c C-c 刷新才能生效。

-2. 在配置文件中定义 上面的标签订义只能在当前文件生效,若是要在全部的.org 文件中生效,须要在 Emacs 配置文件 .emacs 中进行定义:

(setq org-tag-alist '((:startgroup . nil) ("@work . ?w) ("@home" . ?h)  ("@tennisclub" . ?t)  (:endgroup . nil)  ("laptop" . ?l) ("pc" . ?p)))

默认状况下,org会动态维护一个Tag列表,即当前输入的标签若不在列表中,则自动加入列表以供下次补齐使用。

为了使这几种状况(默认列表、文件预设tags,全局预设tags)同时生效,须要在文件中增长一个空的TAGS定义:

#+TAGS:

4.10.3 tags查询

设置标签的主要目的仍是为了查询。org-mode 会为搜索结果创建一个视图

快捷键 说明
C-c \ 能够用来查找某个tag下的全部项目
C-c / m 搜索并按树状结构显示
C-c a m 从全部agenda file里创建符合某tag的全局性列表
+   和      a+b   同时有这两个标签
-   排除    a-b   有 a 但没有 b
|   或      a|b   有 a 或者有 b
&   和      a&b   同时有 a 和 b,能够用“+”替代

在查询视图中 C-c C-c 退出(我用怎么无论用呢?)

5 格式导出与发布

5.1 导出

org-mode能够导出不少种格式 ,其中最经常使用的就是文本、网页和pdf格式的。

C-c C-e a 导出为文本文件。 C-c C-e h 导出为 HTML 文件

pdf有点麻烦须要什么latex,目前还不会。

5.2 发布

发布相关的命令:

命令 说明
C-c C-e C 提示指明一个项目,将全部的文件发布
C-c C-e P 发布包含当前文件的项目
C-c C-e F 只发布当前文件
C-c C-e E 发布全部项目

6 总结

终于写完了,虽然说org-mode高效,也把我累了个够呛。不会经过实际操做,学会了不少,对org-mode也算有了入门的了解。至于org-mode其他的功能,正在学习中,之后会把用法和使用心得奉上。不行了,要休息休息了。

7 附录-快捷键总列表(7.8版)

相关文章
相关标签/搜索