Emacs org-mode 日程定义

日常用org最多的地方就是日程管理,能够管理日程的软件很多,手机电脑都有很好的工具,至于为什么我选择使用emacs,因为我喜欢纯文本。功能强大和易用本身就是矛盾,使用纯文本算是简单易用,使用org又可以保证一定的功能性。大家也不需要把org看的很高端,不过还有另一个最重要的原因促使我们使用,那就是可以在新人面前装一个x。总之,期待阅读此文章的爱好者能够将非主流进行到底,无论以后转行或者转职,都持续关注并坚持使用。

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

日程定义

定义状态

系统内置状态有两种: TODO和DONE
强大之处在于可以任意定义状态

例如:

#+SEQ_TODO: TODO(T!) | DONE(D@) CANCELED(C@/!)
#+SEQ_TODO: BUG(b) KNOWNCASE(k) | FIXED(f)

将定义放在文档任意位置,我选择放头部。
重要: 光标移动至定义处,使用 C-c C-c使定义生效。

将光标移动至任务处,使用C-c C-t 打开缓冲区,长得像下图这个样子,此时即可选择自定的状态。

image.png

状态改变之后,变成如下的状态

***** TODO Check compute node in demo center
- State "TODO" from "" [2018-03-16 Fri 09:34]

  • 可以定义多组状态序列,每个“#+SEQTODO”行定义一组
  • 状态之间用空格分隔
  • 可以在()中定义附加选项,包括:
    • 字符:该状态的快捷键
    • !:切换到该状态时会自动增加时间戳
    • @ :切换到该状态时要求输入文字说明
    • 如果同时设定@和!,使用“@/!”
  • 用“|”分隔未完成状态和已完成状态。未完成状态在查询待办事项时会列出。
快捷键 功能
C-c C-t 打开状态切换buffer
S-LEFT/RIGTH 切换状态

优先级

org中有三种优先级,分别为A,B,C,在安排日程时,可以按照优先级进行排序。

快捷键 功能
S-UP/DOWN 优先级设置

例:

***** TODO [#A] Check Network connection
***** TODO [#B] Check Nic status
***** TODO [#B] Check Storage status
***** TODO [#C] Check Power supply

子任务

org中,可为某个日程设置若干子任务。支持在上级任务上增加标记,当子任务状态发生改变时,自动更新上级任务完成情况。有两种表现形式,百分比和分数, 例如: [80%] 和 [3/8]
设置方式实在上级标题中,任意位置插入[%] [/], 当子任务发生改变时,自动跟新其中的数字。

例:
两种显示

***** Blade[25%] [1/4]
****** DONE [#A] Check Network connection
****** TODO [#B] Check Nic status
****** TODO [#B] Check Storage status
****** TODO [#C] Check Power supply

此处需注意:

  • 当子任务状态改变时,只更新上一级,不可级联。
  • 当所有子任务完成,只能标记为100% ,并不会标记为DONE。如果需要自动设定为完成,可以通过更新emacs配置文件进行设置,作者不喜欢这么做,请自行查找。

***** Blade[1/4]
****** DONE [#A] Check Network connection
****** TODO [#B] Check Nic [1/2] status
- State "TODO" from "" [2018-03-17 Sat 19:29]

******* TODO Nic1
******* DONE Nic2
****** TODO [#B] Check Storage status

小提醒:
org 是文本,所以copy一个区域时 ,使用标准复制(M-w)是全文本复制,被隐藏的子标题也会被复制下来,如果希望只将显示的文本复制而不复制隐藏的子标题,使用快捷键 C-c C-x v (org-copy-visible)

非标题的子任务

上一个主题是介绍的子任务是以子标题的形式。如果希望非主题的子任务,可以使用列表,并在列表开头添加 “[ ]” 作为复选框,形成局部的子任务。
例如:

****** TODO [#B] Check Storage status [2/3]
- State "TODO" from "" [2018-03-17 Sat 19:29]
- [X] HD
- [X] SSD
- [ ] Block

快捷键 功能
C-c C-c 改变复选框状态
M-S-Rec 增加一个子项
M-Rec 增加一个子项(不带复选框)

任务查询

在org 基础功能中,已经介绍过,使用C-c /, 可列出多种检索方式,如下图


image.png
选项 功能
[t]odo 列出所有TODO状态的task
[T]odo-kwd 根据key word 选择状态,可以多个状态, 例如 TODO|DONE

时间

任务可以设置两种,计划时间(SCHEDULED)和截止时间(DEADLINE)。
首先,先熟悉一下Emacs的时间戳

时间戳

使用”< >“进行标记, 说多没用,看例子:

<2018-03-16 Fri>
<2018-03-17 Sat 21:00>
<2018-03-18 Sun 10:00-12:00>
<2018-03-16 Fri 10:00 +1w>

可以标记时间点和间隔,间隔用天(d)、周(w)、月(m)年(y)来表示
应为是文本,可以手工输入,或者使用 C-c .来创建。

选项 功能
C-c . 创建时间戳(在日历中,使用S-Left/Right选择日期,输入时间)
C-c < 当前日期
C-c > 查看日历
C-c ! 与任务不相关的日期 (以中括号标记)
S-Left/Right 更改日期,天为单位
S-Up/Down 改变光标所在的位置的时间单位,用来单独修改时间和日期

用两个连续的“--”将两个时间戳连接起来表示时间段

<2018-03-17 Sat>--<2018-03-19 Mon>

选项 功能
C-c . 连续使用可以创建时间段
C-c C-y 计算间隔

org的时间戳

可以为任务设置计划时间与截止时间。

选项 功能
C-c C-s 设置计划时间
C-c C-d 设置截止时间

****** TODO [#C] Check Power supply
DEADLINE: <2018-03-18 Sun 21:00> SCHEDULED: <2018-03-18 Sun>

设置timer

给org插入一个count down的 timer,用来给某个任务提示。
使用C-c C-x ; 开始一个timer。开始时,会在状态栏倒计时;结束时,会在buffer中提示。例如:

TODO [#C] Check Power supply: time out

属性

C-c C-x P 可以为任务设置属性。例如:

****** TODO [#B] Check Storage status [2/4]
- State "TODO" from "" [2018-03-17 Sat 19:29]
:PROPERTIES:
:P: 1
:Mail: send
:END:

* CD collection
:PROPERTIES:
:NDisks_ALL: 1 2 3 4
:Publisher_ALL: "Deutsche Grammophon" Philips EMI
:END:

属性可继承,并可以全局设置,文件所有内容都会继承,在文件头添加
key后面添加_All可以设置该key的可选value

#+PROPERTY: P_ALL 1 2 3 4

使用+号为一个属性添加新的value

#+PROPERTY: var foo=1
#+PROPERTY: var+ bar=2

* CD collection
** Classic
:PROPERTIES:
:GENRES: Classic

:END:

*** Goldberg Variations
:PROPERTIES:
:Title: Goldberg Variations
:GENRES+: Baroque

选项 功能
C-c C-x P 设置属性,k-v键值对
C-u M-x org-insert-drawer 插入一个空的属性语法块
C-c C-c 属性操作列表
C-c C-c s 设置当前属性
C-c C-c d 删除当前属性
C-c C-c D 全局删除当前属性
S-Left/Right 切换下一个候选的value

特殊的属性:

ALLTAGS All tags, including inherited ones.
BLOCKED "t" if task is currently blocked by children or siblings.
CLOCKSUM The sum of CLOCK intervals in the subtree. org-clock-sum
must be run first to compute the values in the current buffer.
CLOCKSUM_T The sum of CLOCK intervals in the subtree for today.
org-clock-sum-today must be run first to compute the
values in the current buffer.
CLOSED When was this entry closed?
DEADLINE The deadline time string, without the angular brackets.
FILE The filename the entry is located in.
ITEM The headline of the entry.
PRIORITY The priority of the entry, a string with a single letter.
SCHEDULED The scheduling timestamp, without the angular brackets.
TAGS The tags defined directly in the headline.
TIMESTAMP The first keyword-less timestamp in the entry.
TIMESTAMP_IA The first inactive timestamp in the entry.
TODO The TODO keyword of the entry.

查看属性的好办法是使用column view,使用C-c C-x C-c (org-columns)开启。

选项 功能
r 重新载入
q 退出
n/p 切换value
e 编辑value
v 显示value
a 编辑可能的value
S-M-right 插入一个vlaue
S-M-left 删除当前column

命令如下:

选项 功能
r 重新载入
q 退出
n/p 切换value
e 编辑value
v 显示value
a 编辑可能的value
S-M-right 插入一个vlaue
S-M-left 删除当前column

可以使用两种方式定义:

#+COLUMNS: %25ITEM %TAGS %PRIORITY %TODO

** Top node for columns view
:PROPERTIES:
:COLUMNS: %25ITEM %TAGS %PRIORITY %TODO
:END:

列定义的语法 如下:

%[width]property[(title)][{summary-type}]

width: 显示字符数
property: 属性
title : 显示的title
summary-type: 聚合的定义,例如 {+} {+;%.1f} 等。

属性功能有点多,参考官方文档深挖。

Drawer

属性(property)是特殊的drawer,可以通过C-c C-x d添加任意drawer。
此处不详细介绍了。

** This is a headline
Still outside the drawer
:DRAWERNAME:
This is inside the drawer.
:END:
After the drawer.

最后

至此,可以用org来管理日程了,其他功能太多,不详细介绍了。
设置了日程,如何查看呢,下一篇着重介绍 Agenda。

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

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,100评论 18 139
  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi阅读 7,106评论 0 10
  • 星耀小学亲子共成长寒假共读六年四班陈依娜读书时长30分钟第八天
    简单就好_7471阅读 158评论 0 0
  • 这是一本魔幻小说,讲诉了一个叫吉吉的男孩为了妈妈的生日礼物而弥补时间漏洞的故事。小说虚构另一个时间永恒的世界...
    holy_cao阅读 151评论 0 0
  • 生活中,不少爱美人士面临着青春走了痘还在的困扰。痘痘会给人留下很不好的印象,大家都迫切想了解,如何才能成功祛痘?...
    84c040b61e5b阅读 777评论 2 4