使用emacs进行时间管理(1)——org-mode基本操作
2016-04-17 23:32
731 查看
本篇文章大部分引用自:org-mode: 最好的文档编辑利器,没有之一,
同时结合自己的实践,整理而成。
Org是一个基于快速高效的文本方式来实现做笔记、管理待办事项(TODO list)以及做项目计划的模式。
使用emacs做时间管理正是利用org-mode对文本的强大操作能力,所以我们首先要学习org-mode的基本概念及操作。
注意两点:
1.
2.
在spacemacs下,更多的快捷键可以通过
默认的大纲显示没有缩进,显得有些乱。可以用
如果想让某个文件默认用这种方式打开,可以在文件头部增加:
如果希望打开所有org文件都默认用这种方式,可以在.emacs中配置:
你可能认为要录入这样的表格很繁琐,实际上你只需要输入表头“|Name|Pone|Age”之后,按C-c RET,就可以生成整个表格的结构。类似的快捷键还有很多:
同一列表中的项的第一行必须缩进相同程度。当下一行的缩进与列表项的的开头的符号或者数字相同或者更小时,这一项就结束了。当所有的项都关上时,或者后面有两个空行 时,列表就结束了。例如:
通常分类是固定的,很少变化,而tag随时可以增加。 分类通常表现为树状结构,比较清晰,但是树状结构过于简单,不能表达复杂的信息。比如,如果有多个分类树,处理起来就会比较麻烦。
所以,这两种方式通常结合起来使用。比如blog系统中,通常既支持文章的分类(树),又支持为每篇文章作tag标记。
org-mode作为最好的文档编辑利器 ,在支持文内大纲(也是树状结构)的同时,还方便的支持tag功能。tag可以在多篇文档中共用。
而且Org-mode的标签自动按照大纲树的结构继承。即子标题自动继承父标题的标签。比如:
则最后一行标题具有 work, boss, notes, action 四个标签。
如果希望文档中的所有标题都具有某些标签,只需要定义文档元数据:
如果手工输入标签,在标题后设置标签,键入:后,M-Tab自动提供标签的补齐。
更方便的做法是在正文部分用C-c C-q 或直接在标题上用C-c C-c创建标签,这种方式可以列出所有预定义的标签以便选取。
在当前文件头部定义:
这种方式预定义的标签只能在当前文件中使用。使用#+TAGS元数据进行标记,如:
每项之间必须用空格分隔,可以在括号中定义一个快捷键;花括号里的为标签组,只能选择一个
对标签定义进行修改后,要在标签定义的位置按 C-c C-c 刷新才能生效。
在配置文件中定义 上面的标签定义只能在当前文件生效,如果要在所有的.org 文件中生效,需要在 Emacs 配置文件 .emacs 中进行定义:
默认情况下,org会动态维护一个Tag列表,即当前输入的标签若不在列表中,则自动加入列表以供下次补齐使用。
为了使这几种情况(默认列表、文件预设tags,全局预设tags)同时生效,需要在文件中增加一个空的TAGS定义:
可以使用逻辑表达式限制条件,更准确灵活的搜索:
在查询视图中 C-c C-c 退出。
我们做GTD,只需掌握以上内容即可。对于快捷键,不用强行记忆,边用边记才更有效。需要经常使用的一个技巧就是使用
同时结合自己的实践,整理而成。
一、org-mode
org-mode官方定义:Org is a mode for keeping notes, maintaining TODO lists, and doing project planning with a fast and effective plain-text system.
Org是一个基于快速高效的文本方式来实现做笔记、管理待办事项(TODO list)以及做项目计划的模式。
使用emacs做时间管理正是利用org-mode对文本的强大操作能力,所以我们首先要学习org-mode的基本概念及操作。
二、大纲
org-mode强大的操作能力源于它对大纲的支持。1、定义一个标题
要定义一个大纲,首先要定义标题,定义标题的方式非常简单,使用*即可:
* 这是一个一级标题 ** 这是一个二级标题 *** 以此类推
注意两点:
1.
*要位于行首
2.
*后面要有一个空格
2、大纲相关的快捷键
折叠
快捷键 | 功能 |
---|---|
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 标题 |
M-LEFT/RIGHT | 将当前标题升/降级 |
M-S-LEFT/RIGHT | 将子树升/降级 |
M-S-UP/DOWN | 将子树上/下移 |
C-c * | 将本行设为标题/正文 |
C-c C-w | 将子树或区域移动到另一标题处(跨缓冲区) |
C-x n s/w | 只显示当前子树/返回 |
C-c C-x b | 在新缓冲区显示当前分支(类似C-x n s) |
C-c / | 只列出包含搜索结果的大纲,并高亮,支持多种搜索方式 |
C-c C-c | 取消高亮 |
SPC ?,即空格加问号查看,非常的方便,基本上不需要我们自己记忆,这也正是spacemacs的优点所在。
3、大纲的显示方式
默认的大纲显示没有缩进,显得有些乱。可以用
SPC : org-indent-mode切换到另一种显示方式:
如果想让某个文件默认用这种方式打开,可以在文件头部增加:
#+STARTUP: indent
如果希望打开所有org文件都默认用这种方式,可以在.emacs中配置:
(setq org-startup-indented t)
二、轻量级标记语言
前面的大纲和超链接都是使用标记来定义的。实际上,Org现在已经成为一种专门的轻量级标记语言,与Markdown、reStructedText、Textile、RDoc、MediaWiki等并列。1、字体
*粗体* /斜体/ +删除线+ _下划线_ 下标: H_2 O 上标: E=mc^2 等宽字: =git= 或者 ~git~
2、表格
Org 能够很容易地处理 ASCII 文本表格。任何以‘|’为首个非空字符的行都会被认为是表格的一部分。’|‘也是列分隔符。一个表格是下面的样子:| Name | Pone | Age | |-------+------+-----| | Peter | 1234 | 17 | | Anna | 4321 | 25 |
你可能认为要录入这样的表格很繁琐,实际上你只需要输入表头“|Name|Pone|Age”之后,按C-c RET,就可以生成整个表格的结构。类似的快捷键还有很多:
创建和转换表格
快捷键 | 说明 |
---|---|
C-c 竖线 | 创建或转换成表格 |
调整和区域移动
快捷键 | 说明 |
---|---|
C-c C-c | 调整表格,不移动光标 |
TAB | 移动到下一区域,必要时新建一行 |
S-TAB | 移动到上一区域 |
RET | 移动到下一行,必要时新建一行 |
编辑行和列
快捷键 | 说明 |
---|---|
M-LEFT/RIGHT | 移动列 |
M-UP/DOWN | 移动行 |
M-S-LEFT/RIGHT | 删除/插入列 |
M-S-UP/DOWN | 删除/插入行 |
C-c - | 添加水平分割线 |
C-c RET | 添加水平分割线并跳到下一行 |
C-c ^ | 根据当前列排序,可以选择排序方式 |
3、段落
对于单个回车换行的文本,认为其属于同一个段落。在导出的时候将会转化为不换行的同一段。如果要新起一个段落,需要留出一个空行。 这点与markdown类似。4、列表
Org 能够识别有序列表、无序列表和描述列表。无序列表项以‘-’、‘+’或者‘*‘开头。 有序列表项以‘1.’或者‘1)’开头。 描述列表用‘::’将项和描述分开。 有序列表和无序列表都以缩进表示层级。只要对齐缩进,不管是换行还是分块都认为是处于当前列表项。
同一列表中的项的第一行必须缩进相同程度。当下一行的缩进与列表项的的开头的符号或者数字相同或者更小时,这一项就结束了。当所有的项都关上时,或者后面有两个空行 时,列表就结束了。例如:
My favorite scenes are (in this order) 1. The attack of the Rohirrim 2. Eowyn's fight with the witch king + this was already my favorite scene in the book + I really like Miranda Otto. Important actors in this film are: - Elijah Wood :: He plays Frodo - Sean Austin :: He plays Sam, Frodo's friend.
列表操作快捷键
为了便利,org-mode也支持很多列表操作的快捷键,大部分都与大纲的快捷键类似:快捷键 | 说明 |
---|---|
TAB | 折叠列表项 |
M-RET | 插入项 |
M-S-RET | 插入带复选框的项 |
M-S-UP/DOWN | 移动列表项 |
M-LEFT/RIGHT | 升/降级列表项,不包括子项 |
M-S-LEFT/RIGTH | 升/降级列表项,包括子项 |
C-c C-c | 改变复选框状态 |
C-c - | 更换列表标记(循环切换) |
5、分隔线
五条短线或以上显示为分隔线。------
五 、标签
1、tag的作用
对于信息的管理,有分类(category)和标签(tag)两种方式。这两种方式各有特点:通常分类是固定的,很少变化,而tag随时可以增加。 分类通常表现为树状结构,比较清晰,但是树状结构过于简单,不能表达复杂的信息。比如,如果有多个分类树,处理起来就会比较麻烦。
所以,这两种方式通常结合起来使用。比如blog系统中,通常既支持文章的分类(树),又支持为每篇文章作tag标记。
org-mode作为最好的文档编辑利器 ,在支持文内大纲(也是树状结构)的同时,还方便的支持tag功能。tag可以在多篇文档中共用。
2、标记tag
在Org-mode中,可以对标题增加tag标记。标记的格式如下:标题 :标记1标记2:标记3:
而且Org-mode的标签自动按照大纲树的结构继承。即子标题自动继承父标题的标签。比如:
* Meeting with the French group :work: ** Summary by Frank :boss:notes: *** TODO Prepare slides for him :action:
则最后一行标题具有 work, boss, notes, action 四个标签。
如果希望文档中的所有标题都具有某些标签,只需要定义文档元数据:
#+FILETAGS: :Peter:Boss:Secret:
如果手工输入标签,在标题后设置标签,键入:后,M-Tab自动提供标签的补齐。
更方便的做法是在正文部分用C-c C-q 或直接在标题上用C-c C-c创建标签,这种方式可以列出所有预定义的标签以便选取。
3、预定义tag
上面提到,除了可以输入标签外,还可以从预定义的标签中进行选择。预定义的方式有两种:在当前文件头部定义:
这种方式预定义的标签只能在当前文件中使用。使用#+TAGS元数据进行标记,如:
#+TAGS: { 桌面(d) 服务器(s) } 编辑器(e) 浏览器(f) 多媒体(m) 压缩(z)
每项之间必须用空格分隔,可以在括号中定义一个快捷键;花括号里的为标签组,只能选择一个
对标签定义进行修改后,要在标签定义的位置按 C-c C-c 刷新才能生效。
在配置文件中定义 上面的标签定义只能在当前文件生效,如果要在所有的.org 文件中生效,需要在 Emacs 配置文件 .emacs 中进行定义:
(setq org-tag-alist '( (:startgroup . nil) ("桌面" . ?d) ("服务器" . ?s) (:endgroup . nil) ("编辑器" . ?e) ("浏览器" . ?f) ("多媒体" . ?m) ))
默认情况下,org会动态维护一个Tag列表,即当前输入的标签若不在列表中,则自动加入列表以供下次补齐使用。
为了使这几种情况(默认列表、文件预设tags,全局预设tags)同时生效,需要在文件中增加一个空的TAGS定义:
#+TAGS:
4、 按tag搜索
使用标签可以更好的管理内容。org-mode提供了以下功能:快捷键 | 说明 |
---|---|
C-c \ | 按tag搜索标题 |
C-c / m | 搜索并按树状结构显示 |
C-c a m | 按标签搜索多个文件(需要将文件加入全局agenda) |
+ 和 a+b 同时有这两个标签 - 排除 a-b 有 a 但没有 b | 或 a|b 有 a 或者有 b & 和 a&b 同时有 a 和 b,可以用“+”替代
在查询视图中 C-c C-c 退出。
我们做GTD,只需掌握以上内容即可。对于快捷键,不用强行记忆,边用边记才更有效。需要经常使用的一个技巧就是使用
SPC ?查看当前模式下的快捷键。
相关文章推荐
- ubuntu 上连接服务器
- Mysql性能优化三(分表、增量备份、还原)
- 20145316《Java程序设计》第七周学习总结
- 20145303 实验二 Java面向对象程序设计
- RSA算法详解及C语言实现
- Could not find action or result
- Spark框架简介
- 这些日子,2年ABAP经验,开发功能重点序列
- 《网络攻防技术与实践》第七周学习总结
- 机电传动控制第八周作业
- PHP之namespace
- 第3章 相互依存性与贸易的好处
- 1002-Strange fuction
- 【mail stone】:里程碑记录
- 结尾想法
- Codeforces Round #345 D. Image Preview(二分)
- 《Java程序设计》第7周学习总结
- 20159313网络攻击与防范第七周学习总结
- how to use flux in ubuntu
- HDU 2859