org-mode入门教程

org-mode 入门教程
By Z.H. Fu

 

切问录 www.fuzihao.org

org-mode 入门教程

  org-mode是Emacs提供的一个强大的编辑模式,可以用于做会议笔记以及制作各种待办事项(GDT)。其语法类似于Markdown但是提供了比Markdown更多的操作,再加上Emacs强大的编辑功能,能给笔记增加很多动态的操作(能纯文本上实现折叠、展开、树状视图、表格求和、求代码运行结果等功能),可以说org-mode是最强大的标记语言。而org-mode的强大,也导致了他比markdown更加复杂,需要花些时间来练习,本文选出了org-mode最强大、实用的功能,进行最简单的介绍,下面介绍org-mode的使用方法。

org-mode的logo

安装

  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的列表项,而在总任务后面可以输入一个[%]或者[/]则能自动计算总任务进度。最后结果如图所示。

orgmode5.png

  
常用快捷键:

  • 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 
orgmode4.png

  如果要插入行和列,可在表头添加一个标签或者新起一行,输入|再调整格式即可。其中最后一行是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以树的形式展示所有的 TODO
  • C-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=Ωalogbni=1aidΩ∇2x=∫Ωalog⁡b∑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。

orgmode6.png

常用快捷键:

  • 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/457773.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何对web.config进行加密和解密

http://blog.csdn.net/jf_jifei/article/details/6527390 在WEB网站开发过程中&#xff0c;如果我们将数据库连接字符串封装到.DLL文件中&#xff0c;将会给数据库和程序的迁移带来麻烦&#xff0c;因为万一服务器地址或者数据库发生变更&#xff0c;那么我们就不得不修改源程序…

java 爬虫_Java原生代码实现爬虫(爬取小说)

Java也能做爬虫。现在提到爬虫人第一个想到的就是python&#xff0c;其实使用Java编写爬虫也是很好的选择&#xff0c;Java成熟的爬虫框架很多&#xff0c;下面给大家展示一个使用Java基础语言编写的爬取小说的案例&#xff1a;实现功能&#xff1a;爬取目标网站全本小说代码编…

JS window对象 Location对象 location用于获取或设置窗体的URL,并且可以用于解析URL。 语法: location.[属性|方法]...

Location对象 location用于获取或设置窗体的URL&#xff0c;并且可以用于解析URL。 语法: location.[属性|方法] location对象属性图示: location 对象属性&#xff1a; location 对象方法: 任务 在右边编辑器script标签内&#xff0c;获取当前显示文档的URL,并输出。 <!DOC…

java 数据结构_Java版-数据结构-队列(数组队列)

前言看过笔者前两篇介绍的 Java版数据结构 数组和 栈的盆友&#xff0c;都给予了笔者一致的好评&#xff0c;在这里笔者感谢大家的认可&#xff01;&#xff01;&#xff01;由于本章介绍的数据结构是 队列&#xff0c;在队列的实现上会基于前面写的 动态数组来实现&#xff0c…

ssh 介绍 和使用 程序不挂起

目录 SSH的安全机制 SSH的安装 启动服务器的SSH服务 SSH两种级别的远程登录 SSH的高级应用 Secure Shell(SSH) 是由 IETF(The Internet Engineering Task Force) 制定的建立在应用层基础上的安全网络协议。它是专为远程登录会话(甚至可以用Windows远程登录Linux服务器进行…

java 四舍五入_Java常用类

每个人的心里&#xff0c;都藏着一个了不起的自己&#xff0c;只要你不颓废&#xff0c;不消极&#xff0c;一直悄悄酝酿着乐观&#xff0c;培养着豁达&#xff0c;坚持着善良&#xff0c;只要在路上&#xff0c;就没有到达不了的远方&#xff01;BigInteger在Java中&#xff0…

Sublime 插件- px 转rem

一个CSS的px值转rem值的Sublime Text 3自动完成插件。 插件效果如下&#xff1a; 安装 克隆项目 https://github.com/hyb628/cssrem.git进入packages目录&#xff1a;Sublime Text -> Preferences -> Browse Packages...复制下载的cssrem目录到刚才的packges目录里。重…

window8下安装RabbitMQ

2019独角兽企业重金招聘Python工程师标准>>> 1.下载并安装erlang&#xff0c;http://www.erlang.org/download.html。64位的下载的是otp_win64_19.1.exe 查看是否安装成功&#xff1a; 2.下载RabbitMQ,最新版是2.8.1&#xff0c;http://www.rabbitmq.com/releases/r…

gdb 收到SIGPIPE信号

2019独角兽企业重金招聘Python工程师标准>>> handle SIGPIPE noprint nostop 转载于:https://my.oschina.net/u/1176097/blog/761957

列的数目比列的名字要多_你们要的甘特图来啦!还有具体做法哦!

作为项目的负责人&#xff0c;“时间管理”也是极为重要的一环。甘特图作为常用的项目管理工具之一&#xff0c;有助于把一个大型项目划分为几个小部分&#xff0c;并有条理地展示。甘特图(Gantt chart)又称为横道图、条状图(Bar chart)。以提出者亨利劳伦斯甘特(Henry Laurenc…

图片处理拓展篇 : 图片转字符画(ascii)

首先要明确思路, 图片是由像素组成的, 不同的像素有不同的颜色(rgb), 那么既然我们要转化为字符画, 最直接的办法就是利用字符串来替代像素, 也就是用不同的字符串来代表不同的像素. 另外图片一般来讲是彩色的, 而acsii(一般打印在终端上吧) 都是黑白的, 此时就要介绍另外一个概…

未捕获typeerror: $形象。cropper不是函数_没有学不会的python--细说自定义函数的细节...

没有学不会的python函数是什么&#xff1f;老调常谈&#xff0c;还是那老一套&#xff0c;学习一个东西前&#xff0c;先搞懂是什么&#xff0c;再来学习怎么用。函数函数&#xff0c;如果你是刚经历过高考肯定很熟悉&#xff0c;数学中就经常出现这个名词&#xff0c;比如什么…

centos 7.0上RabbitMQ 3.5.6版本多实例启动操作讲解

在很多场景中&#xff0c;我们可能需要单机上启动多个rabbitmq实例&#xff0c;启动多个实例其实就是启用不同的端口。rabbitmq的默认端口为5672,15672,25672&#xff0c;以下经过实际操作绝对原创&#xff0c;亲测有效&#xff0c;耗费了老半天时间&#xff0c;怎么没有白费啊…

usg6000v 无法ping通_柯美复印机网络打印无响应?无法打印、扫描?原来这里出了问题...

机器在安装后&#xff0c;网络连接正常&#xff0c;使用ping命令可以通&#xff0c;但无法使用打印&#xff0c;扫描等网络功能Ping命令使用方法&#xff1a;1、“运行”输入CMD&#xff0c;调出Dos窗口2、输入命令&#xff1a;Ping 设备IP地址&#xff0c;按回车即可可以拼得通…

【NOIP考前模拟赛】纯数学方法推导——旅行者问题

一、写在前面 这题似乎是一道原创题目&#xff08;不是博主原创&#xff09;&#xff0c;所以并不能在任何OJ上评测&#xff0c;博主在网盘上上传了数据&#xff08;网盘地址&#xff1a;http://pan.baidu.com/s/1mibdMXi&#xff09;&#xff0c;诸位看官需者自取。另外博主使…

GO 语言笔记

使用 Visual Studio Code 开发环境配置请看 http://studygolang.com/articles/8851 为什么要使用Go 语言&#xff1f;Go 语言的优势在哪里&#xff1f; - Go 语言- 知乎 请看 https://www.zhihu.com/question/21409296 基础入门看官网 https://golang.org/ & 无闻 http…

qtreewidget 获取根节点_详解去中心化信任根dRoT技术

近日&#xff0c;第21届国际信息与通信安全会议(ICICS 2019)在北京召开。ICICS是国际公认的网络与信息安全类顶级学术会议&#xff0c;汇聚了国内外诸多信息安全专家与学术泰斗。本届ICICS 2019会议围绕信息与网络安全技术的各个方面展开深入研讨&#xff0c;议题涵盖了区块链、…

判断该网页是在什么设备打开。

为什么80%的码农都做不了架构师&#xff1f;>>> <script type"text/javascript"> //判断访问终端 var browser{versions:function(){var u navigator.userAgent, app navigator.appVersion;return {trident: u.indexOf(Trident) > -1, //IE内…

kail中tools的安装和第一个php学习笔记

安装tools 打开 鼠标右击选择 创建文件夹 mkdir cdrom 把tools文件复制到 位置——计算机——cdrom文件夹下 打开 cdrom cd cdrom 复制生成的目录 解压文件夹&#xff1a;tar zxvf 粘贴目录 回车 ls 复制目录 cd 粘贴目录 ls 复制后缀为pl的目录 ./粘贴目录.d自动下载 Enjoy代表…

PHP发送邮件

先看一下HTML如何发送邮件 HTML发送邮件首先得使用超链接标签<a> 之后使用mailto:链接收件人邮件地址 用bcc链接发件人邮箱&#xff08;加密抄送&#xff0c;cc为直接抄送&#xff09; mailto 和bcc/cc之间用?连接 subject邮件主题&#xff0c;body邮件内容&#xff0…