==============> 重剑无锋,大巧不工。

Org Mode Manual Learning Notes

Learning notes recorded during reading org mode manual, simple and incomplete, because they are all about basic syntax.


Headers are lines started with star * (be careful that there should not be any indent before the star, otherwise it will be an item of a list, not a header).

The first level header is with one star *, and the second with two stars, and so on.


unsorted lists

Unsorted list items start with -, + or *, but the star is NOT recommanded because it is not easy to distinguish it from headers.

  • so, this is an unsorted list item using -
  • this one using +

sorted lists

Sorted list items start with 1. or 1), if org-alphabetical-lists is configured, a. a) A. A) can also be used.

  1. sorted list item using a right parenthesis )
  2. using a period .

description lists

Description list items are unsorted list items, which contain separator :: to distinguish description term from description.

description example
this is a description for the "description example"

foot notes

Footnotes are made in square brackets, start with "fn:", and then follow a name, e.g. "1" or "kelvin".

my blog on cnblogs1

my blog on github2


create a table is very easy, like what I am doing below:

name age job
Kelvin Hu 23 Software Engineer
Someone Unknown Unknown

several useful key bindings:

  1. C-c - :: mapping command is org-table-insert-hline, will insert a separate line below
  2. C-c RET :: mapping command is org-table-hline-and-move, insert a separate line and move to next row
  3. C-c | :: mapping command is org-table-create-or-convert-from-region, create or convert table


Links exist between two square brackets, like below:

kelvin's github blog or

useful key bindings:

C-c C-o
org-open-at-point, open the link in browser

for more information about links, please visit offical org doc: click here

markup rules


The line below will be considered as the title of this document:

#+title: the line will be used as the title of current document

note that the case is not sensitive, so #+title: will have the same effect as #+TITLE:
and also do not forget the colon ":"

several other useful syntax

#+BEGIN_VERSE and #+END_VERSE: the contents between the two tags will be outputed originaly, with no format

'#+BEGIN_QUOTE' and '#+END_QUOTE': the contents between the two tags are treated as quoting
(why I add a quote ' here? you may try it then you will know why I add it here ^_^)

#+BEGIN_CENTER and #+END_CENTER: the two tags will center the contents between them

emphasis and monospace

As the offical doc says, you can make word bold, italic and underlined, and also strike through. also there are other two syntax: code and verbatim, I do not quite know what they are used for.

horizontal rules

a line with at least 5 dashes and only contains dashes will be converted into a horizontal line, like below:


several rules:

1) lines start with #
2) indented lines start with #+
3) contents between #+BEGIN_COMMENT and #+END_COMMENT
4) entire subtree starts with keyword COMMENT

C-c ; can toggle the COMMENT keyword at the beginning of an entry

note: all comments will NOT be exported

useful syntax again

   example here...

'#+begin_src <syntax> [-n -r]'
   some code here...

the <syntax> stands for the type, e.g. emacs-lisp

e.g. as below:

1: (defun hello-world()
2:   (print "hello world"))
public class Test {
    public static void main(String[] args) {
        System.out.println("hello world");

include files

for example: #+include: "~/.emacs.d/init.el" src emacs-lisp will insert the contents of ~/.emacs.d/init.el at current position, as below: (the second parameter is the tag type, "src" stands for "#+begin_src/#+end_src" pair, so do "quote" and "example")

#+include: "~/.emacs.d/init.el" src emacs-lisp