Org-mode文字編輯器Emacs的一種支援內容分級顯示的編輯模式。這種模式下可以建立待辦列表,紀錄檔管理,做筆記,做工程計劃或者寫網頁。Org-mode通常啟用於字尾名為org的純文字檔案,使用星號標記有層次的內容(如文章大綱、話題與子話題、巢狀代碼),並提供一組函數用於讀取並展示這類標記以及操縱內容(如摺疊大綱內容、移動元素、更改待辦項狀態)。

Org-mode
org-mode logo
org-mode screenshot
原作者Carsten Dominik
開發者Bastien Guerry
目前版本9.4(2020年9月,​4年前​(2020-09
原始碼庫 編輯維基數據連結
程式語言Emacs Lisp語言
類型個人資訊管理做筆記日程管理時間管理 ...
許可協定GPL
網站www.orgmode.org

Carsten Dominik於2003年發明了org-mode,用於管理自己的生活和工作。而自初次發佈以來,有大量參與者向其貢獻了代碼。目前的維護者為Bastien Guerry。從Emacs 22版本開始,Org-mode已是Emacs預設安裝的一部分[1],作為一個主編輯模式存在。由於Emacs和Org-mode是分開發布的,所以經常可以從org-mode的官網下載到比已經整合到Emacs中版本要新的org-mode。Org-mode的大部分功能都可以使用Emacs的經典方法客製化(通過選單欄進行人性化組態或者修改 。emacs 設定檔)。

在org-mode流行以後,主流的文字編輯器,如VimAtomVisual Studio Code等,都對org檔案類型擁有了社區擴充支援。

功能和基本語法

Org檔案並沒有採用任何類似XML標記式語言來支援其豐富的編輯特性;相反,org檔案都是嚴格的純文字格式。執行在org-mode的Emacs會自動解析這些文字並提供給用戶操作文字結構的介面。

自訂層級大綱

Org-mode中使用星號標定一行所屬層級,星號數量代表層級深度。

* 这是一级大纲
** 这是其二级大纲
*** 这是更深的一级大纲
** 另一个二级大纲

此例中,後面幾行都屬於第一行的子節點,可以按Tab鍵切換是否摺疊顯示。整個org文件的基本結構就是若干棵

表格

Org-mode使用純文字方式管理表格。

| First | Second | Third |
| Item1 |  Item2 | Item3 |

第一行會被視作表頭。Emacs會自動調整儲存格的寬度以保持對齊。

超連結

Org-mode中有多種超連結形式。

# 基本链接
[[Wikipedia][https://wikipedia.org]]
[[https://wikipedia.org]]

# 内部链接
#+NAME: Anchor
[[Anchor]] 表示链接到对应 NAME 标记的一行

# 链接到文件
[[file:archive.txt]] # 链接到 archive.txt 文件
[[file:project.org::*Wikipedia]] # 链接到 project.org 文件中名为 Wikipedia 的大纲

# Emacs Lisp 链接
[[elisp:org-agenda]] # 执行交互式 Elisp 命令
[[elisp:(find-file-other-frame "example.org")]] # 对 Elisp 代码求值

任務管理

通過在大綱項上附加狀態標記,org-mode對待辦項(todo)管理有良好的支援。

* Write a novel
** DONE First chapter
** TODO Second chapter [1/2]
*** DONE Design scenes
*** TODO Design figures
DEADLINE: <2018-11-20 Tue>
** TODO Third chapter

基本的任務狀態為TODO和DONE,用戶可以自訂其他級別。除此之外,todo列表可以給每一件事分別賦上不同的優先級和最後完成期限,每一個todo專案又可以細分成次級todo列表或者核對表,而且每一個專案還都可以分別加標籤或者屬性。除此之外,org-mode還可以自動生成某一段時間以內的日程表[2]

標籤

Org-mode對標籤亦有良好的支援,在某行大綱內容後加入單詞,以兩側冒號包圍,即會被編輯器視作標籤。可在標籤視圖內搜尋到含特定標籤的大綱內容。

文字格式

類似Markdown,org檔案中也有一套標記本文內容的方法。

# 引文
#+BEGIN_QUOTE
Hacking is playful cleverness.
-- Richard Stallman
#+END_QUOTE

# 居中
#+BEGIN_CENTER
This sentence will be aligned to center.
#+END_CENTER

# 强调
*Bold*
/Italic/
_Underlined_
=Verbatim=
~Code~
+Delete+

代碼塊與文學編程

#+BEGIN_SRC c
int main(void) {
  return 0;
}
#+END_SRC

Org-mode從7.0版本引入「Babel」功能[3],允許用戶在 "。org" 檔案中插入其他程式語言的代碼塊,不離開Emacs而執行這些代碼塊,並在 "。org" 檔案中儲存執行結果。Org-mode自此具備了有限的文學編程能力,能夠用來編寫代碼和文件混合的程式,提供可重複的電腦和統計實驗記錄[4],或進行遠端系統的運維工作並記錄過程和結果等。

擴充

Org-mode可以使用下面的軟件或者組件進行擴充。有些應用需要支援org-mode的第三方應用程式,這些程式都是自由軟件。

  • Emacs中連結個人資訊的BBDB
  • 可以呼叫URL的各種瀏覽器;
  • 可以快速儲存各種想法,主意或者連結的快照模式;
  • Emacs的郵件客戶端如GnusVMWanderlust,mu4e[5]
  • 可以執行在Org-mode下面的各種其他程式語言(org-babel)。

在流動端,也有支援org-mode檢視或編輯的軟件:

  • iOS
    • beorg
    • MobileOrg
  • Android
    • MobileOrg
    • MobileOrgNg
    • Orgzly

參見

外部連結

參考文獻

  1. ^ Corbet, Jonathan, Pre-testing Emacs 22, LWN.net, 2006 [2012-02-29], (原始內容存檔於2012-05-03) 
  2. ^ Chavan, Abhijeet, Get Organized with Emacs Org-mode, Linux Journal, 2007 [2012-02-29], (原始內容存檔於2012-02-20) 
  3. ^ 存档副本. [2018-11-22]. (原始內容存檔於2018-11-24). 
  4. ^ "How to Use Emacs Org-Babel Mode to Write Literate Programming Document in R Language". [Sep 30, 2015]. (原始內容存檔於2015-07-09). 
  5. ^ 存档副本. [2013-07-20]. (原始內容存檔於2013-07-26).