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


<?xml version="1.0" encoding="utf-8"?>

2 簡介

Org-Mode:Your Life in Plain Text.

Org-模式(Org-mode)是文本編輯軟件Emacs的一種支持內容分級顯示的編輯模式。這種模式支持寫 to-do 列表,日志管理,做筆記,做工程計划或者寫網頁。比如,todo 列表可以給每一件事分別賦上不同的優先級和最后完成期限,每一個 todo 項目又可以細分成次級 todo 列表或者核對表,而且每一個項目還都可以分別加標簽或者屬性。除此之外,org-模式還可以自動生成某一段時間以內的日程表。

我開使用主要的被所見所得,只專注與自己的思緒的神奇之處所吸引。至於高手們所說的種種其實都還沒有概念,我相信通過不斷深入的學習,我也會發出這樣的驚嘆:太TM的太神奇了。

3 安裝及簡單配置

Emacs23之后已經默認包含有org-mode模式了,但是網上都說新版的比較好,我於是就下了個目前最新的穩定版,解壓到site-lisp目錄下后,在.emacs中配置如下:

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的字樣,就意味着你已經成功了。

4 簡單操作

4.1 標題

文章中的標題可以通過 #+TITTLE: 來設置標題。如:

#+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.

    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.

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版)

Date: 2012-06-15 17:54:22

Author: Crowning

Org version 7.8.11 with Emacs version 23

Validate XHTML 1.0


免責聲明!

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



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