神器中的神器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版)

相關文章
相關標籤/搜索