这是一份个人总结,并不能带你入门,我也曾尝试些一个教程,但不自信比这个中文教程好:Org-mode 简明手册,翻译官方的 mini manual,有个最佳实践 organize your life plain text。Org 用来做 GTD 是极好的,它的绝对优势就是完全是纯文本的,所有的格式状态都是由一些符号和特殊字符组成,不依赖于任何的数据库,而且可自定义的东西太多,因为是纯文本的,许多格式定义可以都涉及到一些程序通用的表达式,对于程序猿是非常友好的,但对于普通人需要一定的学习成本。本文提炼了Org常用的功能和设置,作为备忘记录。
强调
强调基本和其他的富文本的格式相同,有时会忘记,先记下:
1234567 |
*粗体* /斜体/ +删除线+ _下划线_ 下标:H_2 O(这里必须留一个空格要不然 2 和 O 都成为小标,目前还不知道怎么去掉空格) 上标:E=mc^2 等宽字: =git= |
视图
稀疏疏
主要是针对本文件
按键 | 说明 |
---|---|
C-c / | 稀疏树的创建命令 |
C-c / r | 其中一项,会提示输入匹配串,所有的匹配项都会高亮 |
议程视图
调用命令:M-x org-agenda,然后会有提示执行对应的命令
- 周/日议程
- 全局 TODO 列表
- 匹配标签和属性
- 单文件的时间轴
- 查找视图
转移
归档
命令:M-x org-achive-x,可以为 subtree,file 甚至 agenda 等等 当一个条目完成时想从当前项目去除的时候,可以定制归档地址
转送笔记
命令:M-x org-refile,refille 可以顾名思义,重新定义当前条目的 file 归属 一个条目转移到另外一个工程里面时可以用到 转送 ,同样可以定义转送目标地址
捕捉
M-x org-capture 在编辑过程中突然冒出一个想法,可以用这个中断当前的工作,可以通过自定义模板定义分类和地址
时间戳
时间戳是一个具有特定格式的日期,可以出现在树条目的标题和正文的任何地方。
- 最简单的:时间+时间
时间按规律重复:N 天(d)、周(w)、月(m)、年(y),会在时间点后面加个尾巴,称作中继器,比如:
<2015-07-29 周三 +1w>
注意看后面的+1w,代表每个周(w)都要重复,直到
<2015-07-29 周三>
为止,在 weekly agenda 里面查看时候会一直有这一项时间/日期段 连续输入时间戳的时候自动生成一个时间段
<2015-07-29 周三>–<2015-09-01 周二>
非激活的时间戳 跟普通的时间一样,只不过它不被激活,即不会出现在议程当中 关于时间戳的快捷键:
快捷键 | 描述 |
---|---|
C-c . | 创建时间,如果连续使用则会自动将两个时间连接成时间段 |
C-c ! | 未激活的时间戳 |
S-left/right | 改变时间戳的一天 |
S-UP/DOWN | 将光标置于时间戳的年月日之上,则修改相应时间 |
快捷键 | 描述 |
---|---|
C-c C-d | 在标题下面插入”DEADLINE”关键字的时间戳 |
C-c C-s | 同上,为”SCHEDULED” |
快捷键 | 描述 |
---|---|
C-c C-x C-! | 开始计时(CLOCK-IN), 加 C-u 前缀,从当前计时的任务当中选择任务? |
C-c C-x C-o | 停止计时(CLOCK-OUT),会计算时间在时间段后面插入 |
C-c C-x C-e | 为当前计时任务更新进度 |
C-c C-x C-x | 取消计时 |
C-c C-x C-j | 跳转到当前计时的任务条目 |
C-c C-x C-r | 插入 org 表格统计计时报告 |
C-c C-c | 如果有上面的计时报告则更新它,需要置于首行,即#+BEGIN: |
常用的可以自定义的函数或者变量
- org-startup-folded,设置为 t 默认打开文件的时候自动展开折叠
org-log-into-drawer 和 org-todo-keywords 前者可以跟踪 TODO 条目状态变化 WAIT(w@/!) 注意看括号里面,w 代表改成 WAIT 状态时候的快捷键,”!”代表转变状态的时候会做一个时间戳,”@”代表做一个一个记录。 所以改为 DONE 的时候会有时间戳,CANCELED 会有一个记录 后者则定义除了 TODO 和 DONE 外的状态:
1234
(setq org-todo-keywords '((sequence "TODO(t)" "|" "DONE(d)") (sequence "REPORT(r!)" "BUG(b)" "KNOWNCAUSE(k)" "|" "FIXED(f)") (sequence "|" "CANCELED(c@)")))
其中用”|”来分割不同的状态,同样可以使用”!”和”@”语法,上面的转变成 REPORT 会有时间戳在条目下面
org-tag-alist 指定 tag 值免得每次都要重新输入一大堆的东西,此为 alist,可以用相关的 list 函数添加: 其中?w 就代表字母 w,当你改变或者新增 tag 的关键字,按下 w 则,会输入”@work”的 tag
1
(setq org-tag-alist '(("@work" . ?w) ("@home" . ?h) ("laptop" . ?l)))
org-tags-match-list-sublevels 用于定义议程文件匹配的标签一个全局列表
org-refile-targets 设置转送笔记的目标地址
org-archivelocation 设置归档位置
org-agenda-files 设置议程文件
org-capture-templates 设置捕获模板
12345
(setq org-capture-templates '(("t" "Todo" entry (file+headline "~/org/gtd.org" "Tasks") "* TODO %?\n %i\n %a") ("j" "Journal" entry (file+datetree "~/org/journal.org") "* %?\nEntered on %U\n %i\n %a")))
定义两个模板
org-agenda-custom-commands 自定义议程视图搜索
1234
(setq org-agenda-custom-commands '(("w" todo "WAITING") ("u" tags "+boss-urgent") ("v" tags-todo "+boss-urgent")))
第一项为关键字,可以选择范围 tags 或 todo 项,最后为搜索关键字 搜索字符串可以使用 ‘&’ 作与运算, ‘|’ 作或运算。‘&’ 的约束力比 ‘|’ 的强
org-startup-indented 缩进相关
org-structure-template-alist 定义元数据的模板,下面为默认模板:
1
("e" "#+BEGIN_EXAMPLE\n?\n#+END_EXAMPLE" "<example>\n?\n</example>")
其中”e”代表你<e 时候会自动补全接下的内容,最后也可以看出元数据其实是定义了一些 html 节点,其中”?”为内容的占位符。
(setq org-agenda-start-day “+2d”)可以显示未来两天的议程。
org-todo-keyword-faces 可以定义 TODO 状态的颜色显示各种显示等
123
(setq org-todo-keyword-faces '(("TODO" . org-warning)("STARTED" . "black") ("CANCELED" . (:foreground "yellow" :weight bold))))