All in Org-mode
emacs
2019-07-21

1 概要

  • 以 # 号后加一空格开始的行表示注释,文件导出时这些内容不被导出,上面第一行就是。
  • 以 #+ 符号开始的行用于设置文档参数或内容属性,比如文档的标题、作者,org-mode打开时文档的呈现状态等。
  • 用 [[]] 括起来的内容表示外部链接
  • 用 <<>> 括起来的内容表示文档的内部链接
  • 以 * 符号开始的行,表示该行为标题。
  • 标题内容前的 TODO 标记是待办任务的标记符号。
  • 标题行后面两个 : 符号间的内容表示标签( TAG )。
  • 标题行如果标题文本前有 COMMENT 标记表示该标题下的所有内容为注释。
  • 位于 #+BEGINXXX 和 #+ENDXXX 之间的内容为特殊文档块,如代码块、例子、引用等。
  • C-c C-x C-h查看按键的帮助信息

2 元数据

2.1 文档元数据

        具体包括:

        #+TITLE:       the title to be shown (default is the buffer name)
        #+AUTHOR:      the author (default taken from user-full-name)
        #+DATE:        a date, an Org timestamp1, or a format string for format-time-string
        #+EMAIL:       his/her email address (default from user-mail-address)
        #+DESCRIPTION: the page description, e.g. for the XHTML meta tag
        #+KEYWORDS:    the page keywords, e.g. for the XHTML meta tag
        #+LANGUAGE:    language for HTML, e.g. ‘en’ (org-export-default-language)
        #+TEXT:        Some descriptive text to be inserted at the beginning.
        #+TEXT:        Several lines may be given.
        #+OPTIONS:     H:2 num:t toc:t \n:nil @:t ::t |:t ^:t f:t TeX:t ...
        #+BIND:        lisp-var lisp-val, e.g.: org-export-latex-low-levels itemize
        You need to confirm using these, or configure org-export-allow-BIND
        #+LINK_UP:     the ``up'' link of an exported page
        #+LINK_HOME:   the ``home'' link of an exported page
        #+LATEX_HEADER: extra line(s) for the LaTeX header, like \usepackage{xyz}
        #+EXPORT_SELECT_TAGS:   Tags that select a tree for export
        #+EXPORT_EXCLUDE_TAGS:  Tags that exclude a tree from export
        #+XSLT:        the XSLT stylesheet used by DocBook exporter to generate FO file

        其中#+OPTIONS是复合的选项,包括:

        H:         set the number of headline levels for export
        num:       turn on/off section-numbers
        toc:       turn on/off table of contents, or set level limit (integer)
        \n:        turn on/off line-break-preservation (DOES NOT WORK)
        @:         turn on/off quoted HTML tags
        ::         turn on/off fixed-width sections
        |:      turn on/off tables(因为使用|会出错)
        ^:         turn on/off TeX-like syntax for sub- and superscripts.  If
        you write "^:{}", a_{b} will be interpreted, but
        the simple a_b will be left as it is.
        -:         turn on/off conversion of special strings.
        f:         turn on/off footnotes like this[1].
        todo:      turn on/off inclusion of TODO keywords into exported text
        tasks:     turn on/off inclusion of tasks (TODO items), can be nil to remove
        all tasks, todo to remove DONE tasks, or list of kwds to keep
        pri:       turn on/off priority cookies
        tags:      turn on/off inclusion of tags, may also be not-in-toc
        <:         turn on/off inclusion of any time/date stamps like DEADLINES
        *:         turn on/off emphasized text (bold, italic, underlined)
        TeX:       turn on/off simple TeX macros in plain text
        LaTeX:     configure export of LaTeX fragments.  Default auto
        skip:      turn on/off skipping the text before the first heading
        author:    turn on/off inclusion of author name/email into exported file
        email:     turn on/off inclusion of author email into exported file
        creator:   turn on/off inclusion of creator info into exported file
        timestamp: turn on/off inclusion creation time into exported file
        d:         turn on/off inclusion of drawers

        这些元数据可以根据需要设置。建议放在文档的开头部分。如,本文采用的元数据如下:

        #+TITLE: org-mode: 最好的文档编辑利器,没有之一
        #+AUTHOR:sanshi Kong
        #+EMAIL: kyleemail@163.com
        #+KEYWORDS: emacs, org-mode
        #+OPTIONS: H:4 toc:t 

2.2 内容元数据

        通常在行首以“#+”开头,可以有多种用途。
        分行区块
        默认内容不换行,需要留出空行才能换行。定义了分行的区块可以实现普通换行:
        #+BEGIN_VERSE
        Great clouds overhead
        Tiny black birds rise and fall
        Snow covers Emacs
        -- AlexSchroeder
        #+END_VERSE
        缩进区块
        通常用于引用,与默认格式相比左右都会留出缩进:
        #+BEGIN_QUOTE
        缩进区块
        #+END_QUOTE
        居中区块
        #+BEGIN_CENTER
        Everything should be made as simple as possible, \\
        but not any simpler
        #+END_CENTER
        代码区块
        #+BEGIN_SRC ruby
        require 'redcarpet'
        md = Redcarpet.new("Hello, world.")
        puts md.to_html
        #+END_SRC
        例子
        : 单行的例子以冒号开
        下面多行例子不得已前面都加上了:头
        : #+BEGIN_EXAMPLE
        多行的例子
        使用区块
        : #+END_EXAMPLE
        注释
        以‘#‘开头的行被看作注释,不会被导出
        区块注释采用如下写法:
        #+BEGIN_COMMENT
        块注释
        ...
        #+END_COMMENT
        表格与图片
        对于表格和图片,可以在前面增加标题和标签的说明,以方便交叉引用。
        比如在表格的前面添加:
        #+CAPTION: This is the caption for the next table (or link)
        #+LABEL: tbl:table1
        则在需要的地方可以通过
        \ref{table1}
        来引用该表格。

3 Org标题

3.1 标题语法

1
STARS KEYWORD PRIORITY TITLE TAGS

其中:

  • STARS即星号,这是一个标题唯一必要的内容,其他(包括标题名称)都可以省略。
  • KEYRORD 为TODO关键词,大小写敏感。
  • PRIORITY 为优先级选项,为#号加一个字符并用方括号括起来,如 [#A]
  • TITLE 即为实际的标题文本
  • TAGS 为标签。

例子:** TODO [#2] 优先级为2的待办事项 :@home:

3.2 基于标题的文档编辑

Org基于标题的文档编辑方式允许用户在非常简洁的显示模式下对某个或多个标题下的所有内容进行复制、 粘贴、移动等操作,相当方便,真正实现了标题在文档管理中的组织者作用。 Org大大简化了大纲模式的使用,把大纲模式的整个显示/隐藏功能整合到了一个命令中:org-cycle,并绑定在TAB键上。

3.2.1 视图循环

按键 动作
TAB 子树循环,需要插入点在标题上
C-u TAB 子树视图在FOLDED->CHILDREN->SUBTREE
S-TAB 全局循环,整个缓冲区在OVERVIEW->CONTENTS->SHOWALL状态中循环
C-u C-u C-u TAB 显示全部,包括drawers

默认打开时是OVERVIEW状态。变量org-startup-folded可以定制,startup关键字也可以对单个文件生效。

          #+STARTUP: content

:(setq org-startup-folded nil)

3.3 术语约定

  • 标题:仅指标题定义行
  • 子标题:大标题下属的小标题
  • 标题树:包括标题、子标题及其下属的所有文本
  • 大纲:或文档轮廓,即全部标题,是一种显示模式
  • 大纲折叠:隐藏子标题树
  • 大纲展开:分级显示子标题树

3.4 在标题间移动光标

按键 动作
C-c C-p/n 移动到上/下一个标题
C-c C-b/f 移动到同级别的上/下标题
C-c C-u 跳到上一级标题
C-c C-j 切换到大纲浏览模式

3.5 大纲的折叠与展开

按键 动作
TAB 局部命令,循环使用可以折叠、展开光标所在位置上的标题树
S+TAB 全局命令,循环使用可以折叠、展开整个文档的标题树

3.6 设定文档属性

  • #+STARTUP: overview
  • #+STARTUP: contant
  • #+STARTUP: showall
  • #+STARTUP: showeverything
        # -*- Org -*-
        #+TITLE: Org-mode笔记
        #+AUTHOR: kyleemail@163.com
        #+STARTUP: content
        #+STARTUP: indent
        #+TODO: TODO STARTED | DONE
        #+TYP_TODO: 工作(w!) 学习(s!) 休闲(l!)
        #+SEQ_TODO: PENDING(p!) TODO(t!) | DONE(d!) ABORT(a@/!)

3.7 编辑标题

按键 动作
M-LEFT/RIGHT 升级/降级当前标题,不允许有子标题的存在
M-S-LEFT/RIGHT 升级/降级当前标题,标题树内的各级标题相应升级/降级
M-UP/DOWN 在同级标题间上/下移动标题树,不能跨级别移动
M-RET 在当前标题后插入同级别标题符号
C-RET 在当前标题树后插入同级标题符号
M-S-RET 在当前标题后插入同级TODO标题
C-S-RET 在当前标题树后插入同级TODO标题
C-c * 把光标所在行转成标题
C-c - 把光标所在行转化成列表

使用Tips:Org-mode很多编辑命令的使用与光标所处的位置有关,同一个键盘命令位于不同的文本环境有不同的作用,这些命令称为**局 部命令**

3.8 稀疏树

Org模式有一个重要的功能是能根据大纲树中选择的信息构建处稀疏的树,这样文档就可以尽可能的折叠, 只有选择的信息和它对应的标题会显示出来

C-c / 提示输入一个字符来选择稀疏树的创建命令
C-c / r 输入匹配字符串,将匹配的项显示成稀疏树,且高亮;按C-c C-c取消高亮

4 表格

Org 能够很容易地处理 ASCII 文本表格。任何以‘|’为首个非空字符的行都会被认为是表格的一部分。’|‘也是列分隔符。一个表格是下 面的样子:

Name Pone Age
Peter 1234 17
Anna 4321 25

你可能认为要录入这样的表格很繁琐,实际上你只需要输入表头“|Name|Pone|Age”之后,按C-c RET,就可以生成整个表格的结构。类似的 快捷键还有很多:

按键 动作
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 ^ 根据当前列选择排序方式

5 文本列表

Org能够识别有序列表、无序列表、描述列表

  • 无序列表以'-'、'+'、'*'开头
  • 有序列表以'1.'、'1)'开头
  • 描述列表用'::'将项和描述分开

同一列表中项的第一行必须缩进相同的程度;下一行的缩进与列表开头的符号或者数字相同或者更小时,这一项就结束了。

      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.
      Important actors in this film are:
      - Elijah Wood :: He plays Frodo
      - Sean Austin :: He plays Sam, Frodo's friend.

6 字体

粗体 斜体 删除线 下划线 下标: H2 O(这里必须留一个空格要不然2和O都成为小标,目前还不知道怎么去掉空格) 上标: E=mc2 等宽字: =git=

7 段落

对于单个回车换行的文本,任务其属于同一个段落。 如果要新起一段,需要留出一个空行。

8 脚注

脚注就是以脚注定义符号开头的一段话,脚注定义符号是将脚注名称放在一个方括号里,需要脚注编号,要求放在第0列,不能有缩进。 引用就是在正文中将脚注名称用方括号括起来。

      The Org homepage [fn:1] now looks a lot better than it used to.
      ....
      [fn:1] The link is:http://orgmode.org
C-c C-c 在脚注定义和引用之间跳转

9 超链接

Org能够识别URL格式的文本并将他们处理成可点击的链接;通常链接格式为

      [[link][description]] 或者 [[link]]

    

链接输入一旦完成,Org就会改变他的视图,如上的链接显示 descriptionlink 使用C-c C-l来编辑链接,插入点要在链接上。

9.1 外部链接

Org支持的链接格式包括文件、网页、新闻组、BBDB数据库项、IRC会话和记录。 外部链接是URL格式的定位器,以识别符号开头(file、http、docview),后面跟着一个冒号,冒号后面不能有空格。

        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)

连接到图片的,如果有描述信息则会产生链接按钮,没有描述信息的在导出时会将图片嵌入到HTML中。

9.2 内部链接

如果一个链接地址不是URL形式,就会作为当前文件内部链接来处理

        [[#my-custom-id]]

      

会链接到CUSTOMID属性是"my-custom-id"的项

        [[My Target][Find my target]]
        调到对应的目标<<My Target>>

      
        <<目录>>
        [[www.gnu.org/software/emacs/][Downlad an install Emacs]]


        [[/home/kyle/code/emacsLearning/Org/learn.org][Org学习笔记]]
        ;;显示内容为 Org学习笔记,跳转到相应的文件

        [[目录][返回目录]]  ;;此时显示内容为‘返回目录’,单击会跳转到 <<目录>> 的位置

9.3 目标链接

文件链接可以包含一些额外的信息使得进入链接时可以到达特定的位置 使用双冒号加上行号或者搜索选项来实现

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