6 Tags
tags 主要使用 字母,数字,_
和 @
这些来组成,并且前后都需要有 :
,多个 tag 可以同时使用,比如: :work:urgent:
tag 继承
- 多层级标题中的 tag 会被自动继承,虽然并没有直接显示出来。
- 如果希望整个文件都试用某个 tag,那么可以在文件开头这样写
#+FILETAGS: :Peter:Boss:Secret:
。
设置 tag
M-TAB
可以补完 tag- 对标题使用新的 tag,可以使用
C-c C-q
在这个标题以及标题下面包含的文字中都可以直接添加 tag,添加的 tag 会被自动加到标题右面 - 如果当前编辑点就在标题,那么可以直接使用
C-c C-c
就相当于C-c C-q
- 如果想要全局可用的 tag,那么需要在设置中,设定
org-tag-alist
- 如果只是在本文件中可用的 tag,那么可以在文件中添加
#+TAGS: @work @home @tennisclub
或者#+TAGS: laptop car pc sailboat
- 可以对 tag 来设置快捷键,全局的这样设置
(setq org-tag-alist '(("@work" . ?w) ("@home" . ?h) ("laptop" . ?l)))
- 可以对 tag 来设置快捷键,本文件这样设置
#+TAGS: @work(w) @home(h) @tennisclub(t) laptop(l) pc(p)
tag 组
- 组 tag,这样设置
#+TAGS: [ GTD : Control Persp ]
- 互斥组 tag,这样设置
#+TAGS: { Context : @Home @Work }
- 如果想要临时关闭组标签,可以
org-toggle-tags-groups
来触发,默认绑定C-c C-x q
搜索 tag
- 搜索 tag,可以使用
C-c / m
,如果想要过滤非 todo,可以在前面追加C-u
- 生成和日常相关的 list,使用
M-x org-agenda m
- 和日常相关的,必须是 todo 或 选择框的,使用
M-x org-agenda M
- 搜索语法,
+boss+urgent-project1
表示必须同时满足 boss 和 urgent,并且不是 project1;Kathy|Sally
表示满足 kathy 或者 sally 都可以。
7 Properties
- 属性是键值对形式,形式类似于
:Title: Gold
。 - 多个属性放在一起,缩进,并且以
:PROPERTIES:
首行,以:END:
为末行,中间包裹住多行属性。每个属性单独占一行, - 可以把可能的属性值放到一个总的属性中,比如说所有
Xyz
可能的值,都放到Xyz_ALL
中,如::NDisks_ALL: 1 2 3 4
- 总属性可以被继承,所以总属性放在上层,下层可以直接使用相应的值。
- 如果想要总属性对整个文件有效,可以在开头,
#+PROPERTY: NDisks_ALL 1 2 3 4
- 设置属性:
C-c C-x p
,先后输入 key 和 value,如果先前没有属性,还会自动创建首末行,否则只是增加相应的属性行。 - 删除属性
C-c C-c d
,必须在属性区域内,这个组合键才有效,选择相应的属性删除即可。
8 Dates and Times
TODO 条目可以加日期和时间标签。
8.1 时间戳
- 时间格式:
<2003-09-16 Tue>
<2003-09-16 Tue 09:39>
<2003-09-16 Tue 12:00-12:30>
- 时间戳可以让条目出现在 agenda 中,参考
The Weekly/daily Agenda
https://orgmode.org/manual/Weekly_002fdaily-agenda.html - 时间戳还可以表示重复间隔时间, N days (d), weeks (w), months (m), or years (y),比如
<2007-05-16 Wed 12:30 +1w>
- 表达式日期,
<%%(diary-float t 4 2)>
, 注意,表达式日期可能会因为年月日的顺序问题导致出错。 - 时间日期区间,使用
--
来表达,<2004-08-23 Mon>--<2004-08-26 Thu>
- 注意,只有尖括号
<>
才可以触发 agenda 中的显示,[]
方括号不能触发显示。
8.2 创建时间戳
- 添加
<>
时间戳,使用C-c .
, 如果在也有的时间上使用这个命令,那就只是修改时间,如果连续使用两次,那就是时间区间。 - 添加
[]
时间戳,使用C-c !
- 选择日期,使用
S-LEFT
S-RIGHT
- 修改日期,还可以直接在日期上使用
S-UP
S-DOWN
8.3 死线和日程
- 创建死线
C-c C-d
- 创建日程
C-c C-s
- 如果需要重复,类似这样即可
DEADLINE: <2005-10-01 Sat +1m>
, 表示在第一次死线之后,每隔一个月都是一次死线。
8.4 统计工时
- 开始计时
C-c C-x C-i
,当使用C-u
作为前缀时,选择第几个计时的任务 - 停止计时
C-c C-x C-o
- 设定评估时长
C-c C-x C-e
,这个会产生超时提示。 - 取消计时
C-c C-x C-q
- 跳转当前计时任务
C-c C-x C-j
,当使用C-u
作为前缀时,选择第几个计时的任务
9 Capture, Refile, Archive
org 使用 capture 来收集新想法和任务,并附上参考信息。移动完成的任务到归档文件,让系统更加精简和快速。
9.1 捕捉
- 默认的捕捉文件位置是
~/.notes
,可以使用命令来修改文件位置:(setq org-default-notes-file (concat org-directory "/notes.org"))
, 建议修改文件为 org 后缀,否则捕捉时,会有警告提示,虽然不影响工作。 - 开始捕捉
M-x org-capture
,因为前面已经按照 org-mode 的推荐,绑定了按键,所以可以使用C-c c
来开启 - 结束捕捉输入
C-c C-c
- 把捕捉文件中的内容转移到其他位置
C-c C-w
- 放弃捕捉
C-c C-k
- 如果安装了
counsel
这个插件,那么直接C-c c
,可以看到已经设定好了Task
这个模板,通过搜索elpa/counsel-20220402.953/counsel.el
可以看到具体的默认配置如下:
(or (org-contextualize-keys
(org-capture-upgrade-templates org-capture-templates)
org-capture-templates-contexts)
'(("t" "Task" entry (file+headline "" "Tasks")
"* TODO %?\n %u\n %a")))))
- 上面这个代码的意思是,使用
t
这个快捷键,选择Task
这个条目,文件名为空,即当前文件名,放在Tasks
这个标题下面,上层标题等级为*
,本次为 TODO 类型,%?
为插入内容的位置,%u
为方括号的时间戳,%a
为产生文件链接。
9.2 重生成文件和复制
如果想把捕捉的数据放到其他地方,直接剪切复制太麻烦了。
C-c C-w
用来移动捕捉的信息,移动的目标通过org-refile-targets
来设定C-u C-c C-w
跳转标题C-u C-u C-c C-w
跳转到最后一次移动的标题树C-c M-w
复制而非移动剪切
9.3 归档
把完成的项目进行归档,有助于文件简洁,agenda 更加快速。最通用的归档方式是移动项目树到另外一个文件。
C-c C-x C-a
把当前条目归档,可以定制org-archive-default-command
C-c C-x C-s
或者C-c $
把当前的子树归档,位置为org-archive-location
- 默认情况,归档文件时当前目录下,原文件名追加
_archive
,可以修改文件名模板,请查看org-archive-location
。 还可以通过文件内的方式来设定位置,#+ARCHIVE: %s_done::
10 Agenda Views
分散在多个文件中的需要在特定时间处理的事务,需要专门收集并整理显示。这些信息会被专门显示在 agenda buffer 中。这个 buffer 只读,但是提供命令可以访问原始的文件并修改他们,意味着你可以修改他们的预定日期。
10.1 日程文件
org-agenda-files
决定哪些文件时日程文件C-c [
添加当前文件到日程文件列表中。如果已经在列表中,就移动到最前。添加前缀,可以添加或移动到尾部C-c ]
把当前文件从列表中移除C-'
C-,
窗口中循环查看列表中的文件。
10.2 日程调度
- 使用
M-x org-agenda
或者C-c a
来通过 dispatcher 来生成 view,首先会生成一个窗口,然后不同的快捷键产生不同的界面。 a
生成本星期的日程表,包含已经完成和未完成的。 scheduled 和 deadline 会注明并分开显示。t
T
生成 todo 的表单m
M
可以通过指定的 tag, property 来过滤标题s
搜索关键字
10.3 本星期日程
目的是生成类似于纸质档的本星期日程表,展示本星期所有的任务。
- 假期可以这种格式
%%(org-calendar-holiday) ; special function for holiday names
- 生日可以这种格式
%%(org-anniversary 1956 5 14) Arthur Dent is %d years old
- 如果需要额外增加预约,可以使用命令
org-agenda-to-appt
10.4 全局 TODO 表单
C-c a t
显示所有的 TODO 标记的表单C-c a T
可以显示指定标记的表单,比如 DONE 的表单。
10.5 匹配标签和属性
通过 agenda view 来过滤标签和属性,类似的方法还有 C-c / m
通过搜索树形展示结果。
C-c a m
可以通过+work+urgent-withboss
或者work|home
这样的来搜索并展示C-c a M
搜索后,只展示TODO
的数据。work|laptop+night
还可以这样组合使用。PROPERTY OPERATOR VALUE
使用一个比较操作符,可以搜索属性
10.6 搜索 view
搜索关键字 C-c a s
+computer +wifi -ethernet -{8\.11[bg]}
这样表示搜索computer
和wifi
并且 不含8.11b
8.11g
- 搜索除了 agenda 文件,还会搜索
org-agenda-text-search-extra-files
指定的文件。
10.7 agenda buffer 命令
agenda view 本身是不能修改的,但是可以通过命令来查看和修改原始文件。
移动
按键 | 作用 |
---|---|
n | 类似 C-n |
p | 类似 C-p |
SPC | 在另外一个窗口中查看原来的条目。还可以带前缀参数 |
TAB | 跳转到另外一个窗口中的对应条目 |
RET | 另外再打开一个窗口,跳转到对应条目,并关闭原来的窗口 |
改变显示
按键 | 作用 |
---|---|
o | 删除其他窗口 |
d | 切换为 天 |
w | 切换为 星期 |
f | 切换到下一个时间周期,如果当前是星期显示,就切换到下个星期,如果是天显示,就切换到下一天 |
b | 切换到上一个时间周期 |
. | 切换到今天 |
j | 跳转到某天,可以通过 S-left 之类的来选择日期 |
l | 打开或关闭 logbook,显示详细的开始和结束时间 |
r / g | 刷新 agenda buffer,可能有改动 |
s | 保存当前所有的 org 文件 |
修改
按键 | 作用 |
---|---|
0 -- 9 | 数字 |
t | 修改 todo 状态,再源文件和 view 中都修改 |
C-k | 删除条目包含子树 |
C-c C-w | 当前条目 refile |
a | 当前条目和子树归档,使用 org-archive-default-command 中的设定 |
$ | 当前条目和子树归档 |
C-c C-s | 设置日程,有前缀参数时,移除时间戳 |
C-c C-d | 设置死线,有前缀参数时,移除时间戳 |
S-RIGHT | 时间戳向未来一天 |
S-LEFT | 时间戳向过去一天 |
I | 开始计时 |
O | 停止计时 |
X | 取消计时 |
J | 跳转到另外一个窗口中正在计时的任务 |
退出
按键 | 作用 |
---|---|
q | 退出 agenda,离开 agenda buffer |
x | 离开 agenda,移除所有和 agenda 相关的 buffer |
10.8 自定义 agenda Views
可以自己设置 views,在 C-c a
之后,可以设置快捷键和对应的筛选条件,相应的命令需要修改 org-agenda-custom-commands
(setq org-agenda-custom-commands
'(("w" todo "WAITING")
("u" tags "+boss-urgent")
("v" tags-todo "+boss-urgent")))
在 C-c a
之后再按下列按键:
按键 | 作用 |
---|---|
w | 查找所有是 "WAITING" 的 TODO 条目 |
u | 查找所有是 boss 但不是 urgent 的条目 |
v | 查找所有是 boss 但不是 urgent 的 TODO 条目 |