org-mode入門教程


org-mode 入門教程
By Z.H. Fu

 

切問錄  www.fuzihao.org

org-mode 入門教程

  org-mode是Emacs提供的一個強大的編輯模式,可以用於做會議筆記以及制作各種待辦事項(GDT)。其語法類似於Markdown但是提供了比Markdown更多的操作,再加上Emacs強大的編輯功能,能給筆記增加很多動態的操作(能純文本上實現折疊、展開、樹狀視圖、表格求和、求代碼運行結果等功能),可以說org-mode是最強大的標記語言。而org-mode的強大,也導致了他比markdown更加復雜,需要花些時間來練習,本文選出了org-mode最強大、實用的功能,進行最簡單的介紹,下面介紹org-mode的使用方法。

org-mode的logo

安裝

  Emacs最新版本(24.4)自帶org-mode,這就意味着只要打開一個后綴名為org的文件就會自動進入org-mode。因此我們只需要下載最新版的Emacs即可。
  
windows用戶:到http://ftp.gnu.org/gnu/emacs/windows/ 下載最新版
ubuntu系列:在終端中輸入:sudo apt-get install emacs

配置

  org-mode功能基本比較完善,不需要更多的配置,但是org模式下默認沒有自動換行的功能,我們在.emacs文件里面添加如下代碼,實現自動換行:

(add-hook 'org-mode-hook (lambda () (setq truncate-lines nil))) 

  

實例教程

  以下分別講解org-mode下幾個實用的功能,更完整的教程可以參考官網教程。下面一步一步完成我們的org文件。(本教程中我們定義 C-x 表示按Ctrl+x,M+x標識Alt+x,S+x代表Shift+x,這也是Emacs的標准定義)

新建文件

1) 打開Emacs
2) 輸入 C-x C-f ~/test/test.org

 

注意文件后綴名為org,該命令新建了一個名為test.org的文件。

新建完文件后,我們就可以輸入相應的內容了。以下是org-mode語法的具體介紹。

章節

  org-mode用* 標識章節,一個* 代表一級標題,兩個* 代表兩級標題,以此類推。

  在Emacs中輸入以下內容:

* 標題一 ** 標題二 

  注意型號后面有空格。可以發現,不同層級標題的顏色是不一樣的。按Alt加左右鍵能夠升降標題的層級。一些常用快捷鍵如下:

  • S+Tab 展開、折疊所有章節
  • Tab 對光標所在章節進行展開、折疊
  • M+left/right 升級/降級標題

列表

  列表是文本中一個比較常用的元素,可以列出各種待完成的事項等。org-mode提供了一種很獨特的功能,可以加入checkbok(實際就是加入一對中間有空格的方括號[ ])標記任務的完成狀況,而且如果一個總任務有多個子任務,還可以根據子任務的完成情況計算總進度(只需要在總任務后面添加一對方括號,里面加上%/ 如[%],[/])。列表分為有序和無序兩種,有序列表以1.或 1)開頭,無序列表以+-開頭 后面,同樣,后面要跟一個空格。
  
  我們輸入一個無序列表:

+ treeroot  
    + branch1 + branch2 

  在輸入的時候,我們按M-RET(Alt+回車)可以自動輸入同級的條目,按M+left/right調整層級。同理,我們還可以輸入一個有序列表:

1) [-] 任務1 [33%] 1) [ ] 子任務1 2) [X] 子任務2 3) [ ] 子任務3 2) [ ] 任務2 

  我們按M-S-RET 可以輸入一個帶checkbox的列表項,而在總任務后面可以輸入一個[%]或者[/]則能自動計算總任務進度。最后結果如圖所示。

orgmode5.png

  
常用快捷鍵:

  • M-RET 插入同級列表項
  • M-S-RET 插入有 checkbox的同級列表項
  • C-c C-c 改變 checkbox狀態
  • M-left/right 改變列表項層級關系
  • M-up/dowm 上下移動列表項

腳注

  用[fn:1]的方式插入腳注,而在最下面插入 

[fn:1]本文參考自http://orgmode.org/orgguide.pdf 

這個標簽是可以點擊的。

表格

  表格常用於數據展示,org-mode提供了方便的列表操作。其中最獨特的是支持類似於Excel的表格函數,可以完成簡單的求和等操作
創建表格時,在新建表格時,首先輸入表頭:

input | Name | Phone | sub1 | sub2 | total | |- 

然后在第二行后面按 tab,表格就會自動生成:

| Name | Phone | sub1 | sub2 | total | |---------+--------+------+------+-------| | | | | | | 

下面我們填入一些數據,在填寫的過程中,按Tab鍵可以調到右方表格,按Enter則能跳到下方表格。如果同時按住Shift,則是反方向跳。輸入表格完成后,按 C-c C-c則能自動對齊表格,出入完成對齊后,表格如下:

| Name | Phone | sub1 | sub2 | total | |-------------+--------+------+------+-------| | maple | 134... | 89 | 98 | | | wizard | 152... | 78 | 65 | | | Hello World | 123... | 76 | 87 | | | hehe | 157... | 87 | 78 | | 

下面我們來體驗下org-mode的強大的表格函數。我們在total列任選一個位置,輸入=$3+$4 ,然后按C-u C-c C-c ,org-mode便能自動為我們計算所有三列加四列的和,並放到第五列。最后完成的表格如下

| Name | Phone | sub1 | sub2 | total | |-------------+--------+------+------+-------| | maple | 134... | 89 | 98 | 187 | | wizard | 152... | 78 | 65 | 143 | | Hello World | 123... | 76 | 87 | 163 | | hehe | 157... | 87 | 78 | 165 | # +TBLFM: $5=$3+$4 
orgmode4.png

  如果要插入行和列,可在表頭添加一個標簽或者新起一行,輸入|再調整格式即可。其中最后一行是ogr-mode自動添加的。一些快捷鍵如下:

  • C-c | 通過輸入大小的方式插入表格
  • C-c C-c 對齊表格
  • Tab 調到右邊一個表格
  • enter 跳到下方的表格
  • M-up/right/left/right 上下左右移動行(列)
  • M-S-up/right/left/right 向上下左右插入行(列)

鏈接

  鏈接用於鏈接一些資源地址,如圖片、文件、URL等。
鏈接的格式是:

[[鏈接地址][鏈接內容]] 

如:

[[http://orgmode.org/orgguide.pdf][grgguid.pdf]]] [[file:/home/maple/圖片/test.jpg][a picture]] 

如果去掉標簽,則能直接顯示圖片:

[[file:/home/maple/圖片/test.jpg]] 

  直接顯示的圖片在Emacs里默認不顯示,需按C-c C-x C-v才能顯示,在輸出成其他格式(html、pdf……)后也能看到。
  
常用快捷鍵:

  • C-c C-x C-v 直接預覽圖片。

待辦事項(TODO )

  TODO是org-mode最具特色的一個功能,也是org-mode設計的初衷,org-mode的作者本意是用其來完成一個個人時間管理程序(GDT)。因此,可以用org-mode來做一個個人時間管理工具!
  下面我們來看怎么寫TODO。TODO 也是一類標題,因此也需要用*開頭,在Emacs中輸入:

** TODO 洗衣服 

可以看到當中的TODO變成了紅色,我們講光標移到該行,按C-c C-t,則發現TODO變成了DONE(這個序列可以自己定義,詳見org-mode手冊)。org-mode兼有了標題和列表的功能,也可以添加checkbox和完成進度,除此之外,還可以設計優先級。
我們輸入:

*** TODO [# A] 任務1 *** TODO [# B] 任務2 *** TODO 總任務 [33%] **** TODO 子任務1 **** TODO 子任務2 [0%] - [-] subsub1 [1/2] - [ ] subsub2 - [X] subsub3 **** DONE 一個已完成的任務 

一些常用操作如下:

  • C-c C-t 變換TODO的狀態
  • C-c / t以樹的形式展示所有的 TODO
  • C-c C-c 改變 checkbox狀態
  • C-c, 設置優先級(方括號里的ABC)
  • M-S-RET 插入同級TODO標簽

標簽Tags

在org-mode中,可以給每一章節添加一個標簽,我們可以通過樹的結構來查看所有帶標簽的章節。在每一節中,子標題的標簽會繼承父標題標簽。
輸入:

*** 章標題 :work:learn: **** 節標題1 :fly:plane: **** 節標題2 :car:run: 

一些常用命令如下:

  • C-c C-q 為標題添加標簽
  • C-c / m 生成帶標簽的樹

時間

org-mode可以利用Emacs的時間空間插入當前時間。
輸入C-c . 會出現一個日歷,我們點選相應的時間即可插入。

<2015-02-17 二> 

時間前可以加DEADLINE:和SCHEDULED:表示時間的類型如:

DEADLINE:<2015-02-12 四> 

下面給出一個常見的TODO標簽的模板:

*** TODO     洗衣服
SCHEDULED: <2015-02-19 四> DEADLINE: <2015-03-01 日> 

常用命令如下:

  • C-c .插入時間

一些特殊文本格式

和其他標記語言一樣,org-mode也支持各種特殊文本格式(如斜體、下划線等)。如下所示:

*bold* /italic/ _underlined_ =code= ~verbatim~ +strike-through+ 

富文本導出

org-mode的強大之處還在於它能到出成各種不同的格式,例如html、pdf等,在導出時,可以加入一些說明符號,來制定導出選項,常用導出符號如下:

設置標題和目錄:

# +TITLE: This is the title of the document # +OPTIONS: toc:2 (only to two levels in TOC) # +OPTIONS: toc:nil (no TOC at all) 

添加引用:

# +BEGIN_QUOTE Everything should be made as simple as possible, but not any simpler -- Albert Einstein # +END_QUOTE 

設置居中:

# +BEGIN_CENTER Everything should be made as simple as possible,but not any simpler # +END_CENTER 

設置樣例(在這里面的內容將會被直接輸出,不會被轉義)

# +BEGIN_EXAMPLE 這里面的字符不會被轉義 # +END_EXAMPLE 

注釋,這些內容不會被導出

注釋的用法#  this is comment # +BEGIN_COMMENT 這里的注釋不會被導出 # +END_COMMENT 

Latex使用,org-mode能支持直接輸入LaTeX,在導出后LaTeX能被正確解釋:

2x=Ωalogbni=1aidΩ∇2x=∫Ωalog⁡b∑i=1naidΩ

插入源代碼

org-mode除了可以直接插入源代碼之外,可以直接求出運行結果,這也是其強大之處,在使用之前,需要在.emacs配置文件中設置加載的運行語言:

(org-babel-do-load-languages 'org-babel-load-languages '( (sh . t) (python . t) (R . t) (ruby . t) (ditaa . t) (dot . t) (octave . t) (sqlite . t) (perl . t) (C . t) )) 

設置好之后輸入:

# +BEGIN_SRC emacs-lisp (+ 1 2 3 4) # +END_SRC 

將光標移到代碼塊內,按C-c C-c,org-mode會自動添加如下一行:

# +RESULTS: : 10 

這正是該代碼的計算結果。下面試一試Python代碼:

# +BEGIN_SRC python :results output a = 1+1 print a # +END_SRC # +RESULTS: : 2 

下面測試一下C語言

# +begin_src C++ :includes <stdio.h> int a=1; int b=1; printf("%d\n", a+b); # +end_src # +RESULTS: : 2 

常用快捷鍵:

  • C-c C-c 對當前代碼塊求值

關於導出

org-mode導出pdf需要LaTeX支持,而導出html很方便,但是導出的html美柚任何樣式,org-mode為每個模塊都添加了css的標簽,我們可以將現成的css文件直接加入,便能得到一個好看的輸出樣式了:

在頭部加入

# +HTML_HEAD: <link rel="stylesheet" type="text/css" href="style1.css" /> 

該代碼加載我們的css。下面我們來將我們的文件導出成html。按C-c C-e會出現一個如圖的提示框,問我們導出那種格式,我們選h導出html。

orgmode6.png

常用快捷鍵:

  • C-c C-e 選擇相應的導出格式

結論

  org-mode是Emacs非常重要的一個模式,自其誕生之后,受到了各種Emacs粉絲的追捧,甚至在VIM上也衍生出了org-mode的分支,足見它的人氣。通過本教程介紹,我們已經見識到了org-mode 的強大功能,而這僅僅只是org-mode功能的一小部分,org-mode更多的功能等待這我們去探索、發現。更多文章請訪問切問錄http://www.fuzihao.org

附件

org文件tutorial.org
導出html文件tutorial.html (直接點擊可以看到效果,點右鍵另存為即是編譯后的文件)

參考文獻

[1]org-mode 官方教程 http://orgmode.org/orgguide.pdf

 

 

from: http://www.fuzihao.org/blog/2015/02/19/org-mode%E6%95%99%E7%A8%8B/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM