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