org-mode入门教程
切问录 www.fuzihao.org
org-mode 入门教程
org-mode是Emacs提供的一个强大的编辑模式,可以用于做会议笔记以及制作各种待办事项(GDT)。其语法类似于Markdown但是提供了比Markdown更多的操作,再加上Emacs强大的编辑功能,能给笔记增加很多动态的操作(能纯文本上实现折叠、展开、树状视图、表格求和、求代码运行结果等功能),可以说org-mode是最强大的标记语言。而org-mode的强大,也导致了他比markdown更加复杂,需要花些时间来练习,本文选出了org-mode最强大、实用的功能,进行最简单的介绍,下面介绍org-mode的使用方法。
安装
Emacs最新版本(24.4)自带org-mode,这就意味着只要打开一个后缀名为org的文件就会自动进入org-mode。因此我们只需要下载最新版的Emacs即可。
windows用户:到http://ftp.gnu.org/gnu/emacs/windows/ 下载最新版
ubuntu系列:在终端中输入:sudo apt-get install emacs
配置
org-mode功能基本比较完善,不需要更多的配置,但是org模式下默认没有自动换行的功能,我们在.emacs文件里面添加如下代码,实现自动换行:
(add-hook 'org-mode-hook (lambda () (setq truncate-lines nil)))
实例教程
以下分别讲解org-mode下几个实用的功能,更完整的教程可以参考官网教程。下面一步一步完成我们的org文件。(本教程中我们定义 C-x
表示按Ctrl+x,M+x
标识Alt+x,S+x
代表Shift+x,这也是Emacs的标准定义)
新建文件
1) 打开Emacs
2) 输入 C-x C-f ~/test/test.org
注意文件后缀名为org,该命令新建了一个名为test.org的文件。
新建完文件后,我们就可以输入相应的内容了。以下是org-mode语法的具体介绍。
章节
org-mode用*
标识章节,一个*
代表一级标题,两个*
代表两级标题,以此类推。
在Emacs中输入以下内容:
* 标题一
** 标题二
注意型号后面有空格。可以发现,不同层级标题的颜色是不一样的。按Alt加左右键能够升降标题的层级。一些常用快捷键如下:
S+Tab
展开、折叠所有章节Tab
对光标所在章节进行展开、折叠M+left/right
升级/降级标题
列表
列表是文本中一个比较常用的元素,可以列出各种待完成的事项等。org-mode提供了一种很独特的功能,可以加入checkbok(实际就是加入一对中间有空格的方括号[ ]
)标记任务的完成状况,而且如果一个总任务有多个子任务,还可以根据子任务的完成情况计算总进度(只需要在总任务后面添加一对方括号,里面加上%
或/
如[%],[/]
)。列表分为有序和无序两种,有序列表以1.
或 1)
开头,无序列表以+
或-
开头 后面,同样,后面要跟一个空格。
我们输入一个无序列表:
+ treeroot + branch1+ branch2
在输入的时候,我们按M-RET
(Alt+回车)可以自动输入同级的条目,按M+left/right
调整层级。同理,我们还可以输入一个有序列表:
1) [-] 任务1 [33%]1) [ ] 子任务1 2) [X] 子任务2 3) [ ] 子任务3 2) [ ] 任务2
我们按M-S-RET
可以输入一个带checkbox的列表项,而在总任务后面可以输入一个[%]
或者[/]
则能自动计算总任务进度。最后结果如图所示。
常用快捷键:
M-RET
插入同级列表项M-S-RET
插入有 checkbox的同级列表项C-c C-c
改变 checkbox状态M-left/right
改变列表项层级关系M-up/dowm
上下移动列表项
脚注
用[fn:1]
的方式插入脚注,而在最下面插入
[fn:1]本文参考自http://orgmode.org/orgguide.pdf
这个标签是可以点击的。
表格
表格常用于数据展示,org-mode提供了方便的列表操作。其中最独特的是支持类似于Excel的表格函数,可以完成简单的求和等操作
创建表格时,在新建表格时,首先输入表头:
input | Name | Phone | sub1 | sub2 | total | |-
然后在第二行后面按 tab,表格就会自动生成:
| Name | Phone | sub1 | sub2 | total | |---------+--------+------+------+-------| | | | | | |
下面我们填入一些数据,在填写的过程中,按Tab键可以调到右方表格,按Enter则能跳到下方表格。如果同时按住Shift,则是反方向跳。输入表格完成后,按 C-c C-c
则能自动对齐表格,出入完成对齐后,表格如下:
| Name | Phone | sub1 | sub2 | total | |-------------+--------+------+------+-------| | maple | 134... | 89 | 98 | | | wizard | 152... | 78 | 65 | | | Hello World | 123... | 76 | 87 | | | hehe | 157... | 87 | 78 | |
下面我们来体验下org-mode的强大的表格函数。我们在total列任选一个位置,输入=$3+$4
,然后按C-u C-c C-c
,org-mode便能自动为我们计算所有三列加四列的和,并放到第五列。最后完成的表格如下
| Name | Phone | sub1 | sub2 | total | |-------------+--------+------+------+-------| | maple | 134... | 89 | 98 | 187 | | wizard | 152... | 78 | 65 | 143 | | Hello World | 123... | 76 | 87 | 163 | | hehe | 157... | 87 | 78 | 165 | # +TBLFM: $5=$3+$4
如果要插入行和列,可在表头添加一个标签或者新起一行,输入|再调整格式即可。其中最后一行是ogr-mode自动添加的。一些快捷键如下:
C-c |
通过输入大小的方式插入表格C-c C-c
对齐表格Tab
调到右边一个表格enter
跳到下方的表格M-up/right/left/right
上下左右移动行(列)M-S-up/right/left/right
向上下左右插入行(列)
链接
链接用于链接一些资源地址,如图片、文件、URL等。
链接的格式是:
[[链接地址][链接内容]]
如:
[[http://orgmode.org/orgguide.pdf][grgguid.pdf]]]
[[file:/home/maple/图片/test.jpg][a picture]]
如果去掉标签,则能直接显示图片:
[[file:/home/maple/图片/test.jpg]]
直接显示的图片在Emacs里默认不显示,需按C-c C-x C-v
才能显示,在输出成其他格式(html、pdf……)后也能看到。
常用快捷键:
C-c C-x C-v
直接预览图片。
待办事项(TODO )
TODO是org-mode最具特色的一个功能,也是org-mode设计的初衷,org-mode的作者本意是用其来完成一个个人时间管理程序(GDT)。因此,可以用org-mode来做一个个人时间管理工具!
下面我们来看怎么写TODO。TODO 也是一类标题,因此也需要用*
开头,在Emacs中输入:
** TODO 洗衣服
可以看到当中的TODO变成了红色,我们讲光标移到该行,按C-c C-t
,则发现TODO变成了DONE(这个序列可以自己定义,详见org-mode手册)。org-mode兼有了标题和列表的功能,也可以添加checkbox和完成进度,除此之外,还可以设计优先级。
我们输入:
*** TODO [# A] 任务1
*** TODO [# B] 任务2 *** TODO 总任务 [33%] **** TODO 子任务1 **** TODO 子任务2 [0%] - [-] subsub1 [1/2] - [ ] subsub2 - [X] subsub3 **** DONE 一个已完成的任务
一些常用操作如下:
C-c C-t
变换TODO的状态C-c / t
以树的形式展示所有的 TODOC-c C-c
改变 checkbox状态C-c
, 设置优先级(方括号里的ABC)M-S-RET
插入同级TODO标签
标签Tags
在org-mode中,可以给每一章节添加一个标签,我们可以通过树的结构来查看所有带标签的章节。在每一节中,子标题的标签会继承父标题标签。
输入:
*** 章标题 :work:learn:
**** 节标题1 :fly:plane: **** 节标题2 :car:run:
一些常用命令如下:
C-c C-q
为标题添加标签C-c / m
生成带标签的树
时间
org-mode可以利用Emacs的时间空间插入当前时间。
输入C-c .
会出现一个日历,我们点选相应的时间即可插入。
<2015-02-17 二>
时间前可以加DEADLINE:和SCHEDULED:表示时间的类型如:
DEADLINE:<2015-02-12 四>
下面给出一个常见的TODO标签的模板:
*** TODO 洗衣服
SCHEDULED: <2015-02-19 四>
DEADLINE: <2015-03-01 日>
常用命令如下:
C-c .
插入时间
一些特殊文本格式
和其他标记语言一样,org-mode也支持各种特殊文本格式(如斜体、下划线等)。如下所示:
*bold*
/italic/
_underlined_
=code=
~verbatim~
+strike-through+
富文本导出
org-mode的强大之处还在于它能到出成各种不同的格式,例如html、pdf等,在导出时,可以加入一些说明符号,来制定导出选项,常用导出符号如下:
设置标题和目录:
# +TITLE: This is the title of the document
# +OPTIONS: toc:2 (only to two levels in TOC)
# +OPTIONS: toc:nil (no TOC at all)
添加引用:
# +BEGIN_QUOTE
Everything should be made as simple as possible,
but not any simpler -- Albert Einstein # +END_QUOTE
设置居中:
# +BEGIN_CENTEREverything should be made as simple as possible,but not any simpler # +END_CENTER
设置样例(在这里面的内容将会被直接输出,不会被转义)
# +BEGIN_EXAMPLE
这里面的字符不会被转义
# +END_EXAMPLE
注释,这些内容不会被导出
注释的用法# this is comment# +BEGIN_COMMENT
这里的注释不会被导出
# +END_COMMENT
Latex使用,org-mode能支持直接输入LaTeX,在导出后LaTeX能被正确解释:
∇2x=∫Ωalogbn∑i=1aidΩ∇2x=∫Ωalogb∑i=1naidΩ
插入源代码
org-mode除了可以直接插入源代码之外,可以直接求出运行结果,这也是其强大之处,在使用之前,需要在.emacs配置文件中设置加载的运行语言:
(org-babel-do-load-languages'org-babel-load-languages'((sh . t) (python . t) (R . t) (ruby . t) (ditaa . t) (dot . t) (octave . t) (sqlite . t) (perl . t) (C . t) ))
设置好之后输入:
# +BEGIN_SRC emacs-lisp
(+ 1 2 3 4) # +END_SRC
将光标移到代码块内,按C-c C-c
,org-mode会自动添加如下一行:
# +RESULTS:
: 10
这正是该代码的计算结果。下面试一试Python代码:
# +BEGIN_SRC python :results output
a = 1+1
print a
# +END_SRC# +RESULTS: : 2
下面测试一下C语言
# +begin_src C++ :includes <stdio.h> int a=1;int b=1; printf("%d\n", a+b); # +end_src # +RESULTS: : 2
常用快捷键:
C-c C-c
对当前代码块求值
关于导出
org-mode导出pdf需要LaTeX支持,而导出html很方便,但是导出的html美柚任何样式,org-mode为每个模块都添加了css的标签,我们可以将现成的css文件直接加入,便能得到一个好看的输出样式了:
在头部加入
# +HTML_HEAD: <link rel="stylesheet" type="text/css" href="style1.css" />
该代码加载我们的css。下面我们来将我们的文件导出成html。按C-c C-e
会出现一个如图的提示框,问我们导出那种格式,我们选h
导出html。
常用快捷键:
C-c C-e
选择相应的导出格式
结论
org-mode是Emacs非常重要的一个模式,自其诞生之后,受到了各种Emacs粉丝的追捧,甚至在VIM上也衍生出了org-mode的分支,足见它的人气。通过本教程介绍,我们已经见识到了org-mode 的强大功能,而这仅仅只是org-mode功能的一小部分,org-mode更多的功能等待这我们去探索、发现。更多文章请访问切问录http://www.fuzihao.org
附件
org文件tutorial.org
导出html文件tutorial.html (直接点击可以看到效果,点右键另存为即是编译后的文件)
参考文献
[1]org-mode 官方教程 http://orgmode.org/orgguide.pdf
from: http://www.fuzihao.org/blog/2015/02/19/org-mode%E6%95%99%E7%A8%8B/
转载于:https://www.cnblogs.com/GarfieldEr007/p/5588979.html
org-mode入门教程相关推荐
- Kafka入门教程与详解
1 Kafka入门教程 1.1 消息队列(Message Queue) Message Queue消息传送系统提供传送服务.消息传送依赖于大量支持组件,这些组件负责处理连接服务.消息的路由和传送.持久 ...
- 【CV】Pytorch一小时入门教程-代码详解
目录 一.关键部分代码分解 1.定义网络 2.损失函数(代价函数) 3.更新权值 二.训练完整的分类器 1.数据处理 2. 训练模型(代码详解) CPU训练 GPU训练 CPU版本与GPU版本代码区别 ...
- python tornado教程_Tornado 简单入门教程(零)——准备工作
前言: 这两天在学着用Python + Tornado +MongoDB来做Web开发(哈哈哈这个词好高端).学的过程中查阅了无数资料,也收获了一些经验,所以希望总结出一份简易入门教程供初学者参考.完 ...
- python向量计算库教程_NumPy库入门教程:基础知识总结
原标题:NumPy库入门教程:基础知识总结 视学算法 | 作者 知乎专栏 | 来源 numpy可以说是 Python运用于人工智能和科学计算的一个重要基础,近段时间恰好学习了numpy,pandas, ...
- mysql query browswer_MySQL数据库新特性之存储过程入门教程
MySQL数据库新特性之存储过程入门教程 在MySQL 5中,终于引入了存储过程这一新特性,这将大大增强MYSQL的数据库处理能力.在本文中将指导读者快速掌握MySQL 5的存储过程的基本知识,带领用 ...
- python tensorflow教程_TensorFlow入门教程TensorFlow 基本使用T
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 TensorFlow入门教程 TensorFlow 基本使用 TensorFlow官方中文教程 TensorFlow 的特点: 使用图 (graph) 来 ...
- air调用java,AIR2.0入门教程:与Java应用交互
在之前的一篇文章中,我介绍了如何使用AIR2.0新增的NativeProcess类与本地进程进行交互和通讯,在那个例子里面我们使用了C++ 的代码,实际上只要是基于命令行的标准输入输出,AIR2.0的 ...
- 【Arduino】开发入门教程【一】什么是Arduino
Arduino Arduino 是一款便捷灵活.方便上手的开源电子原型平台,包含硬件(各种型号的arduino板)和软件(arduino IDE).它适用于艺术家.设计师.爱好者和对于"互动 ...
- python 三分钟入门_Cython 三分钟入门教程
作者:perrygeo 译者:赖勇浩(http://laiyonghao.com) 原文:http://www.perrygeo.net/wordpress/?p=116 我最喜欢的是Python,它 ...
- BIML 101 - ETL数据清洗 系列 - BIML 快速入门教程 - 序
BIML 101 - BIML 快速入门教程 做大数据的项目,最花时间的就是数据清洗. 没有一个相对可靠的数据,数据分析就是无木之舟,无水之源. 如果你已经进了ETL这个坑,而且预算有限,并且有大量的 ...
最新文章
- extjs2.0 ie8 下拉树_extjs自定义下拉树
- 【常用】细数那些常用的linux命令(只针对更新前端代码、上传文件到linux服务器)
- 获得客户端的时区(get client-side time zone by JS)
- Poj2420 A Star not a Tree? 模拟退火算法
- MyBatis和hibernate本质区别与应用场景
- 15.5.2 【Task实现细节】骨架方法的结构
- SAP Cloud Connector里的virtual host和internal host有什么区别
- LeetCode之最小路径和
- java mssql mysql,在JSP中访问MSSQLServer数据库_MySQL
- 美国留学计算机 奖学金,美国留学 计算机专业奖学金申请解析
- 瀑布流式页面布局_微信小程序——实现简单的瀑布流式布局
- linux的进程/线程/协程系列1:进程到协程的演化
- mysql支持多语言_多种语言连接MySQL-Go语言中文社区
- ORA-12541 TNS:无监听程序问题解决
- python3多进程 queue 取值_python3.4.3 多进程之间结果变量的传递问题,程序无任何结果输出...
- 企业与市场_自动驾驶相关公司-技术发展
- jq跨域代理_JQuery前端跨域问题的七种解决方案
- lzg_ad:XPE中EWF组件
- 怎么使用水经注万能地图下载器制作百度行政区划个性化地图
- 怎么找电脑服务器文档,怎么找到电脑的服务器地址