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