Org-模式
- 9.7.6 (2024年6月28日;穩定版本)[1]
![編輯維基數據鏈接](http://upload.wikimedia.org/wikipedia/commons/thumb/8/8a/OOjs_UI_icon_edit-ltr-progressive.svg/10px-OOjs_UI_icon_edit-ltr-progressive.svg.png)
- git
.savannah .gnu .org /cgit /emacs /org-mode .git
![編輯維基數據鏈接](http://upload.wikimedia.org/wikipedia/commons/thumb/8/8a/OOjs_UI_icon_edit-ltr-progressive.svg/10px-OOjs_UI_icon_edit-ltr-progressive.svg.png)
Org-mode 是文本编辑器Emacs的一种支持内容分级显示的编辑模式。这种模式下可以创建待办列表,日志管理,做笔记,做工程计划或者写网页。Org-mode通常启用于后缀名为org的纯文本文件,使用星号标记有层次的内容(如文章大纲、话题与子话题、嵌套代码),并提供一组函数用于读取并展示这类标记以及操纵内容(如折叠大纲内容、移动元素、更改待办项状态)。
Carsten Dominik于2003年发明了org-mode,用于管理自己的生活和工作。而自初次发布以来,有大量参与者向其贡献了代码。目前的维护者为Bastien Guerry。从Emacs 22版本开始,Org-mode已是Emacs默认安装的一部分[2],作为一个主编辑模式存在。由于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还可以自动生成某一段时间以内的日程表[3]。
标签
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”功能[4],允许用户在 "。org" 文件中插入其他编程语言的代码块,不离开Emacs而运行这些代码块,并在 "。org" 文件中储存运行结果。Org-mode自此具备了有限的文学编程能力,能够用来编写代码和文档混合的程序,提供可重复的计算机和统计实验记录[5],或进行远程系统的运维工作并记录过程和结果等。
扩展
Org-mode可以使用下面的软件或者组件进行扩展。有些应用需要支持org-mode的第三方应用程序,这些程序都是自由软件。
- Emacs中链接个人信息的BBDB;
- 可以调用URL的各种浏览器;
- 可以快速保存各种想法,主意或者链接的快照模式;
- Emacs的邮件客户端如Gnus,VM和Wanderlust,mu4e[6];
- 可以运行在Org-mode下面的各种其他编程语言(org-babel)。
在移动端,也有支持org-mode查看或编辑的软件:
- iOS
- beorg
- MobileOrg
- Android
- MobileOrg
- MobileOrgNg
- Orgzly
参见
外部链接
参考文献
- ^ [GNU ELPA] Org version 9.7.6. 2024年6月28日 [2024年7月3日] (英語). 引文格式1维护:未识别语文类型 (link)
- ^ 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).