Emacs org-mode 基础功能

使用Emacs,必用的技能之一就是org-mode,功能比markdown更多,特别是结合TODO安排日程(另一篇文章单独介绍),md更简洁,各有所爱,此文不进行比较,只介绍功能。

Org-mode的实践场景有笔记管理,任务计划,项目管理等必需的诸项日常工作,此处也是促使我工作中使用Emacs的一个重要原因。此文章针对像我这样的初学者,对Emacs有一定了解,但日常工作中针对org-mode的使用尚未有清晰的方案和最佳的实践,通过本系列文章,介绍org-mode的基础用法,org-mode中对ToDo的管理,及我针对Agenda的日常实践。

纸上得来终觉浅,绝知此事要躬行。

基础用法

用大纲组织文档结构

org使用*号来列提纲的标题。
实例:

  • org-mode
    ** 大纲
    介绍
    ** 语法
  • 文档导出

语法

使用* 号标记,位于行首,之后跟一个空格再输入标题。与md的#类似。
最多支持10及的标题。

展开及收缩

快捷键 描述
S-Tab 所有标题展开
Tab 光标所在标题展开

标题跳转

快捷键 描述
C-c C-n/p 下/上标题
C-c C-f/b 下/上标题 仅同一标题
C-c C-u 跳到上一级标题
C-c C-j 跳转到

插入及编辑

快捷键 说明
M-Ret 插入同级标题
M-S-Ret 插入同一级的ToDo标题(ToDo会在下篇介绍)
M-Left/Right 将当前标题升/降级
M-S-Left/Right 将当前标题及子树升/降级
M-S-Up/Down 将当前标题及子树上/下移
C-c * 将本行设置为标题/正文
C-c C-w 将子树及区域移动至另一标题处(通常我直接用文本剪切)
C-x n s/w 只显示当前标题及子树/返回(有用,编辑时可专注于当前标题),org narrow
C-c C-x b 在新缓冲区显示当前标题及子树/返回(同 C-c n s)
C-c / 只显示搜索结果的大纲并高亮(检索时用)
C-c C-c 取消高亮

注:更多的快捷键使用C-c C-x C-h查询

显示方式

使用M-x org-indent-mode 切换带缩进的显示方式。
如果想在打开时进入该模式,在文档头部增加
#+STARTUP:indent
如果希望所有org文件都以此种方式打开,在.emacs中增加
(setq org-startup-indented t)

个人感觉缩进很好,树形的展示很容易看出整个结构,但在编辑时与文本的查看习惯不太一致,故我基本不用。

超链接

符合超链接的规则的内容,自动视为超链接
例如:
https://www.baidu.com/ baidu
file:home
链接类型
Possible completions are:
bbdb: bibtex: docview: doi: elisp: file+emacs:
file+sys: file: ftp: gnus: http: https:
info: irc: mailto: message: mhe: news:
rmail: shell:

对于文件链接,可以在后面增加::定位到行数或搜索选项
file:home/tmp/hello.txt::12
file:home/tmp/hello.txt::My Target 找到目标<<My Target>>

可以自定链接
[[link][description]]
[link]

编辑链接

快捷键 说明
C-c C-l 编辑链接(此处为小写L)
C-c C-o 打开链接(相当有用)

内部链接
定义锚点#<<myanchor>>
[[myanchor][内部链接]]
注: 常用功能,内部跳转

脚注
添加脚注链接[[fn:footprint1][脚注]]
定义脚注

  • fn:footprint1
    注:必须以标题形式定义,我几乎未用过,请用过的朋友指点。

显示图片

使用如下标签插入图片,使用C-c C-x C-v inline方式显示图片,或者使用C-c C-o打开链接。
[[file:a.png]]

字体

符号 描述
*粗体* 粗体
/斜体/
+删除线+
_下划线_

表格

强大的表格处理操作,目前唯一缺点是对中文支持有问题,无法对齐,我暂时尚未找到方案解决,有好方法的兄弟请留言介绍一下。

快捷键 描述
C-c | 创建表格
C-c C-c 重新调整表格缩进
Tab 移动至下一个区域,必要时(行尾)创建一行
S-Tab 移动至上一个区域
S-Ret 移动至下一行,必要时(行尾)创建一行
M-Left/Right 移动列
M-Up/Down 移动行
M-S-Left/Right 删除/插入列
M-S-Up/Down 删除/插入行
C-c - 插入水平分割线
C-c Ret 插入水平分割线并跳到下一行
C-c ^ 根据当前列排序

段落

对于单个回车的文本,org认为是在同一个段落,导出时会转化成不同行的同一段落。如果要起新的段落,请敲空白行。

列表

分类: 有序列表,无序列表,描述列表

无序列表,以 - + * 开头
有序列表, 以1.或1)开头
描述列表, 以::将描述隔开

快捷键 描述
Tab 折叠列表项
M-Ret 插入项
M-S-Ret 插入带复选框的项
M-S-Up/Down 移动列表项
M-Left/Right 升/降级列表项 不包括子项
M-S-Left/Right 升/降级列表项 包括子项
C-c C-c 改变复选框状态
C-c - 更换列表标记
Shift 更换列表标记

大纲管理文档的进阶

标签定义

对于信息的管理,有分类和标签两种方式。
分类: 形式固定,很少变化
树状结构,结构清晰
过于简单,不能表达复杂信息
标签: 随时增加,查找方便
多维度

标签的特点:org的标签自动按照大纲树继承,即子标题自动继承父标题的标签。使用:tag:表示,例如

  • meeting :work:
    ** title :boss:
    *** TODO prepare list :action:

如果希望文件内所有文档都具有某些标签,在开头定义元数据:
#+FILETAGS:Secret:

快捷键 描述
C-c C-q 创建标签
C-c C-c 在标题上使用,创建标签

预定义标签

在文件开头使用元数据标记,例如:
#+TAGS: Host(h) VM(v)
#+TAGS: meeting(m) work home
提醒: 更改后在定义处记得使用C-c C-c激活修改,否则无法显示

同时,可以通过变量org-tag-alist来创建一个全局标签列表。

如果你已经用 org-tag-alist 定义了喜欢的全局标签, 但又想在一个特定的文件中使用动态标签,那么可以通过添加一个空的 TAGS 选项到这个文件来达到这个目的:
#+TAGS:

默认情况下,org使用mini buffer 输入标签,如果希望使用一个键来完成选择,需要为标签提供唯一的字符,即 Host(h)
在配置文件中这样配置
(setq org-tag-alist '(("@host" . ?h) ("@vm" . ? v ) ("@switch" . ?s)))
如果希望标签仅仅和当前使用的文件关联,使用 @Host(h)
换行可加入\n或者多行配置

标签支持分组,类似单选,允许多个分组
#+TAGS: { @Host(h) VM(v) } Switch(s) Firewall(f)
提醒: 大括号前后空格不要忘记

配置文件中设置组参考以下例子:
(setq org-tag-alist '((:startgroup . nil)
("@host" . ?h) ("@vm" . ?v)
("@docker" . ?d)
(:endgroup . nil)
("switch" . ?s) ("firewall" . ?firewall))

如果至少为一个标签定义了快捷键,按 C-c C-c 时会展示一个特殊的界面,其中列出了当前标题已经继承了的标签,还包含一个可选的标签列表。这个界面提供了下面的快捷键:

a-z...       按这些键时会将对应的标签添加到当前的标题列表中或从当前的标题列表中移除。选择一个具体排它性的标签组时,会将标签组的其它标签移除。
TAB        在迷你缓冲区中输入一个标签,即使这个标签不在预定义的标签列表中。对于缓冲区内的标签,提供了自动完成。当然也可以一次添加多个标签,只要把他们用冒号 ':' 分开。
SPC         清除这行的所有标签。
RET         确认修改
C-g         取消修改
q            如果 /q/ 不是某一个标签的快捷键的话,效果和 *C-g* 相同。
!            关闭组的排它性。这样就可以分配一个组的多个标签。
C-c        在下次修改后(参见下面的详细说明),切换 *auto-exit* 。如果是在专家模式下,第一个 *C-c* 会提供一个窗口。

如果你发现在大部分时候,仅仅需要一个键去修改标签列表,那么可以设置 org-fast-tag-select-single-key 参数。这样就不用按回车来退出快速标签选择了——它会在第一次修改立刻退出。如果在个别情况下需要多个按键,按 C-c 为当前的标签选择关闭 auto-exit (实际上是用 C-c C-c C-c 开始了选择而不是 C-c C-c )。如果将这个变量的值设置为 expert 那么除了多按一个 C-c 时,一般情况下在单键输入标签时选择窗口根本不会出现。

标签搜索

建立好了tag系统,可以将相关信息收集到一个表中

C-c / m 或 C-c \ 标准检索, 按照tag进行检索
C-c a m 按标签搜索多个文件 需要把文件加入全局agenda

导出和发布

自带导出功能: C-c C-e


image.png

元数据设置:
#+TITLE: Emacs 最好的编辑器,没有之一
#+AUTHOR: GuoPei
#+EMAIL: xxx@xxx
#+KEYWORDS:emacs ,org-mode

导出为markdown:
M-x org-md-export-as-markdown
必须支持html a标签

以上是简单例子,其他元数据请自行查阅资料,内容相当之多。我最喜欢plain text。

小技巧: 
  如果遇到段落导出无法换行问题,请在开头加入以下Option,
  #OPTIONS: \n:t

发布时设置内容元数据

通常在文档开头,以#+开头

  • 分行区块
    #+BEGIN_VERSE
    内容区块
    #+END_VERSE
    发布为html时,转化为<p class="verse">
    p.verse { margin-left: 3%; }

  • 缩进区块
    #+BEGIN_QUOTE
    区块
    #+END_QUOTE
    发布为html时,转化为<blockquote>

  • 居中区块
    #+BEGIN_CENTER
    区块
    #+END_CENTER

  • 代码区块
    #+BEGIN_SRC ruby
    区块
    #+END_src

  • 例子
    #+BEGIN_EXAMPLE
    多行例子使用区块
    单行例子以冒号开头
    #+END_EXAMPLE

  • 注释
    #+BEGIN_COMMENT
    多行注释
    单行以#开头
    #+END_COMMENT

  • HTML 区块
    #+BEGIN_HTML
    嵌入的
    #+END_HTML

发布时导入其他文件

#+INCLUDE:"~/.emacs" src emacs-lisp
2,3参数可选,如果不给出,会被当作org正常处理

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,117评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,328评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,839评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,007评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,384评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,629评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,880评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,593评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,313评论 1 243
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,575评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,066评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,392评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,052评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,082评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,844评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,662评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,575评论 2 270

推荐阅读更多精彩内容