Org-mode
Org-mode 是文字編輯器Emacs的一種支援內容分級顯示的編輯模式。這種模式下可以建立待辦列表,紀錄檔管理,做筆記,做工程計劃或者寫網頁。Org-mode通常啟用於字尾名為org的純文字檔案,使用星號標記有層次的內容(如文章大綱、話題與子話題、巢狀代碼),並提供一組函式用於讀取並展示這類標記以及操縱內容(如摺疊大綱內容、移動元素、更改待辦項狀態)。
原作者 | Carsten Dominik 等 |
---|---|
開發者 | Bastien Guerry 等 |
目前版本 | 9.4(2020年9月 | )
原始碼庫 | |
程式語言 | Emacs Lisp語言 |
類型 | 個人資訊管理,做筆記,日程管理,時間管理 ... |
許可協定 | GPL |
網站 | www |
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流行以後,主流的文字編輯器,如Vim、Atom和Visual 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的郵件客戶端如Gnus,VM和Wanderlust,mu4e[5];
- 可以執行在Org-mode下面的各種其他程式語言(org-babel)。
在行動端,也有支援org-mode檢視或編輯的軟體:
- iOS
- beorg
- MobileOrg
- Android
- MobileOrg
- MobileOrgNg
- Orgzly
參見
外部連結
- Org-mode 官方網站(頁面存檔備份,存於網際網路檔案館)
- Org-mode教程:Org-mode影片和文字教程(頁面存檔備份,存於網際網路檔案館),Worg(頁面存檔備份,存於網際網路檔案館)
參考文獻
- ^ Corbet, Jonathan, Pre-testing Emacs 22, LWN.net, 2006 [2012-02-29], (原始內容存檔於2012-05-03)
- ^ Chavan, Abhijeet, Get Organized with Emacs Org-mode, Linux Journal, 2007 [2012-02-29], (原始內容存檔於2012-02-20)
- ^ 存档副本. [2018-11-22]. (原始內容存檔於2018-11-24).
- ^ "How to Use Emacs Org-Babel Mode to Write Literate Programming Document in R Language". [Sep 30, 2015]. (原始內容存檔於2015-07-09).
- ^ 存档副本. [2013-07-20]. (原始內容存檔於2013-07-26).