目录
- 1. 标题与大纲
- 2. TODO 项目
- 3. 格式
- 4. 列表
- 5. 表格
- 6. 块标记
- 7. 链接
- 8. 时间戳
- 9. 标签
- 10. Capture-Refile-Archive
- 11. Agenda
- 11.1. 操作
- 11.2. 实践测试时间显示的Agenda
- 11.2.1. 标题带有激活时间戳
- 11.2.2. 标题无激活时间戳
- 11.2.3. 标题无激活时间戳但是内容有时间戳
- 11.2.4. 标题无时间戳,内容有多个时间戳
- 11.2.5. 标题有非激活的时间戳
- 11.2.6. NEXT 标题有状态标记
- 11.2.7. NEXT 标题状态和时间戳
- 11.2.8. LATER 标题有状态, 子标题也有状态,有的有时间戳
- 11.2.9. 标题时间区域
- 11.2.10. 标题非激活时间区域
- 11.2.11. 标题被Schedule
- 11.2.12. 标题一定时间内的未来被Schedule
- 11.2.13. 标题已经进入Deadline
- 11.2.14. 标题将来一定时间进入Deadline
- 11.2.15. 标题有Schedule和Deadline,已经Schedule
- 11.2.16. 标题有Schedule和Deadline,尚未到Schedule
- 11.2.17. 标题的Schedule在过去
- 11.2.18. DONE 标题的Schedule在过去2已经Done
- 12. 导出
- 13. 其它
- 14. WAIT/FORWARD FAQ
[38/160]
([23%]
)- 14.1. MAYBE/FUTURE 如何隐藏"标题星星"?
- 14.2. LATER 搜索子树相关
- 14.3. DONE 各个级别标题列表如何缩进?
- 14.4. DONE 各个级别列表标题中的内容段落如何缩进?
- 14.5. LATER 如何显示图片
- 14.6. DONE 如何删除标题或者项目以及子树下的内容?
- 14.7. DONE 如何链接文件和位置之类的?
- 14.8. DONE 如何行内转义引用?
- 14.9. DONE 如何设置启动时的自动折叠?
- 14.10. MAYBE/FUTURE 如何预览效果?
- 14.11. DONE 标签的预定义
- 14.12. MAYBE/FUTURE 如何自动对齐ORGMODE文件的格式?
- 14.13. DONE 如何在标题间跳转?
- 14.14. DONE 如何缩进列表段落?
- 14.15. LATER 貌似自动刷新功能还是没有完全实现
- 14.16. DONE 如何增加状态?
- 14.17. DONE 如何定制状态的各种属性?
- 14.18. DONE 如何设置和进行TODO的状态快捷切换?
- 14.19. DONE 如何按状态搜索TODO项目?
- 14.20. LATER 如何实现代码原样引用?
- 14.21. DONE 配置折叠状态编辑的动作
- 14.22. LATER 按照TAG进行搜索
- 14.23. LATER 导出与发布
- 14.24. DONE 如何调整大纲缩进显示
- 14.25. DONE 如何写行内引用的文字,类似markdown中的``。
- 14.26. DONE 如何确保硬换行
- 14.27. DONE 如何保存一个与文件位置无关的链接?
C-c l
相关参数? - 14.28. DONE 如何简化列表标题等文档复杂度
- 14.29. CANCEL 如何定制插入的时间戳格式?
- 14.30. LATER 如何在Refile的时候新建一个标题?org-refile-allow-creating-parent-nodes?
- 14.31. DONE 恢复到默认的大纲内容模式还不太好用
- 14.32. WAIT/FORWARD 是否可以org-agenda-files只使用一个文件,对应文件中列出所有agenda文件?
- 14.33. WAIT/FORWARD 如何设置问题Open的时间?
- 14.34. WAIT/FORWARD 确认一下agenda的配置文件是否可以配置目录?
- 14.35. LATER 考虑使用F1-n设置自己日常使用的自定义快捷方式,并且保证不要与其它冲突。
- 14.36. LATER 标题如何添加序号?
- 14.37. LATER 如何直接插入一个子标题?
- 14.38. DONE 参考并整理结构编辑的相关操作:
- 14.39. DONE 如何对一个子树进行导出?
- 14.40. MAYBE/FUTURE 注意,断行要用'\\',要么就空白一行。
- 14.41. WAIT/FORWARD 如何解决输入下划线的时候,自动转换为下标?(想要不转换)
- 14.42. LATER orgmode refile如何创建新的文件和条目,如何定位设置之外的路径
- 14.43. DONE orgmode如何只对一个指定的子标题生成html等导出文件?
- 14.44. DONE 如何在capture模板中将时间戳设置为非活跃时间戳,以减少Agenda的显示负担?
- 14.45. DONE orgmode如何插入带有时间(而不仅仅是日期)的时间戳?
- 14.46. LATER 整理一下emacs_orgmodeusage的文档格式
- 14.47. MAYBE/FUTURE 如何在活跃与非活跃时间戳之间进行切换?
- 14.48. NEXT 如何打开链接的时候不新开一个窗口?
- 14.49. WAIT/FORWARD orgmode 的BEGIN_SRC总是导出错误,提示输入的语言参数,如何确定有哪些语言参数?
- 14.50. LATER 如果Agenda对应TODO状态发生变化,如何刷新Agenda view?
- 14.51. DONE orgmode有没有离线帮助手册在emacs中直接使用?
- 14.52. LATER 如何自由切换orgmode的活跃和非活跃时间戳?
- 14.53. LATER 如何在orgmode中调整已有列表条目的缩进级别?
- 14.54. MAYBE/FUTURE Orgmode表格格式如何自动添加分割横线?为何导出时没有列分割?
- 14.55. MAYBE/FUTURE Agenda view不折行?
- 14.56. MAYBE/FUTURE 如何格式化块?如删除块?
- 14.57. LATER 如何自动触发状态变化?
- 14.58. DONE orgmode与mobile org整合
- 14.59. MAYBE/FUTURE Orgmode refile如何到特定的标题上而非仅仅追加或者插入?
- 14.60. CANCEL orgmode attachment的内容需要看一下
- 14.61. NEXT 如何在orgmode中打开链接的时候不会自动新开窗口而是使用已有窗口?
- 14.62. LATER orgmode 如何修改时间戳?直接编辑?
- 14.63. MAYBE/FUTURE agenda如何不扫描有些状态,如done、cancel、maybe/future
- 14.64. MAYBE/FUTURE orgmode的块是否可以嵌套?比如quote块内是否可以quote?
- 14.65. LATER orgmode如何在导出子树的时候自动以标题命名?
- 14.66. LATER orgmode如何指定导出的路径和文件名称?
- 14.67. LATER orgmode光标如何定位到下一个链接?
- 14.68. LATER orgmode如何实现任务自动触发定时切换以及refile
- 14.69. WAIT/FORWARD 列表与换行
- 14.70. WAIT/FORWARD orgmode建议
- 14.71. LATER Orgmode中checkbox和header也可以结合使用
- 14.72. LATER 确认一下orgmode中的引用块相关细节,例如begin example和begin quote之间的区别
- 14.73. CANCEL 考虑orgmode中,是否应该每一个状态添加!,将处理信息和状态信息集成。
- 14.74. LATER orgmode 如何递归折叠光标所在节点?
- 14.75. WAIT/FORWARD emacs markdown 导出
- 14.76. DONE orgmode与jekyll的结合
- 14.77. LATER orgmode如何输入成块的原样文字而不解释、缩进之类的?
- 14.78. LATER 为什么orgmode定义好的refile如果是单个文件,那么这个文件内容会自动变化?
- 14.79. LATER Jekyll与orgmode结合的问题
- 14.80. NEXT 如何为orgmode导出添加作者信息?
- 14.81. LATER emacs如何导出的时候不缓存上次修改差异而直接强制导出?
- 14.82. DONE 是否应该为取消的项目在切换到取消之前添加备注,类似wait/forward,指明为什么取消?
- 14.83. MAYBE/FUTURE orgmode多文件文档
- 14.84. LATER orgmode中导出时的include关键字所基于的路径能否配置?
- 14.85. LATER 如何在orgmode中时间戳中选择特定的时间插入?需要知道相关的指令和按键,而非手动修改。
- 14.86. NEXT orgmode导出utf8问题
- 14.87. CANCEL orgmode sub task and summary.
- 14.88. DONE 切换和设置优先级
- 14.89. WAIT/FORWARD archive
- 14.90. NEXT orgmode中为何example块中的标题还遵从orgmode的格式?
- 14.91. NEXT orgmode导出为utf8报告错误
- 14.92. LATER orgmode在引用块中缩进的标题问题
- 14.93. MAYBE/FUTURE orgmode导出markdown有太多的引用标记,如何尽可能原样展示而非很多的'style'类似的东西?
- 14.94. LATER orgmode 番茄钟、时间记录
- 14.95. MAYBE/FUTURE orgmode为什么refile 目标会跟踪软链接到其他目录中?
- 14.96. LATER 属性
- 14.97. WAIT/FORWARD ormode项目管理
- 14.98. DONE orgmode考虑是否应该将状态文件以'_' 做为前缀,便于angenda中一目了然不和其他文件混淆?
- 14.99. NEXT orgmode应用聚合有哪些场景?
[2/7]
- 14.100. LATER orgmode记时功能可以提高集中力
- 14.101. NEXT Orgmode如何官方发问?
- 14.102. MAYBE/FUTURE Ascii art
- 14.103. MAYBE/FUTURE artist mode in emacs
- 14.104. MAYBE/FUTURE Emacs中的plantuml配置如何与ascii art格式图形结合?
- 14.105. NEXT emacs 中如何配置dot?
- 14.106. LATER orgmode画图
- 14.107. LATER pdflatex for orgmode
- 14.108. NEXT mobileorg的加密功能,可以防止隐私的泄漏;orgmode的加密功能既能管理工作又能防止工作隐私泄漏。
- 14.109. WAIT/FORWARD orgmode中图片链接导出之时如何不是文字链接而直接图片?
- 14.110. LATER orgmode表格导出之后,文本或者html没有竖线只有横线
- 14.111. NEXT orgmode导出文章pdf问题
- 14.112. LATER orgmode中搜索相关命令的整理
- 14.113. LATER orgmode导出文本格式的内容如何简洁?
- 14.114. NEXT orgmode为什额数据丢失?怎样自动备份?
- 14.115. INBOX orgmode如何跳至标题尾部?
- 14.116. INBOX orgmode如何成块缩进?
- 14.117. NEXT orgmode中如何用等宽字体表示'=', 以及其它类似的转义?
- 14.118. WAIT/FORWARD Agenda 显示指定天数之前的内容
- 14.119. LATER orgmode设置不要隐藏标题星星了。
- 14.120. NEXT 总是出现标题id重复的情况?如何调试和解决?
- 14.121. NEXT 不小心编辑之后,如何撤销?关键不是步骤,而是如何寻找哪个时间有哪个修改,进而退到相应时间?
- 14.122. MAYBE/FUTURE orgmode如何导入 excel表格
- 14.123. LATER Agenda View怎样显示任意时间区间的内容?
- 14.124. LATER Agenda怎样在标题变化的时候,显示父标题?
- 14.125. MAYBE/FUTURE orgmode如何包含子文件?
- 14.126. LATER 考虑用orgmode直接生成网站,不借助jekyll.
- 14.127. MAYBE/FUTURE orgmode附件对于导出有什么作用?
- 14.128. LATER 如何导出pdf的时候,将svg图片也能正确显示?
- 14.129. INBOX orgmode导出如何自动计算代码块而非手动交互确认
y
? - 14.130. INBOX orgmode pdf导出后无法正常显示plantuml生成的svg图片s
- 14.131. INBOX 考虑如何按照优先级对org文件中的内容进行自动或者按需排序
- 14.132. NEXT orgmode导出pdf如何自动添加字体支持?
- 14.133. WAIT/FORWARD orgmode pdf 导出支持
- 14.134. WAIT/FORWARD 如何在emacs orgmode导出的时候,自动提取并创建引用的目录和文件
- 14.135. LATER elisp如何动态设置
org-publish-project-alist
- 14.136. NEXT 导出时,过滤掉时间戳或者TODO关键字的方法。
- 14.137. LATER 为什么无法导出UTF时,有链接的会报错?
- 14.138. LATER org-link-id相关的实现机理(缓存?只适用本地机器?)
- 14.139. WAIT/FORWARD 意外收获
- 14.140. LATER org-pomodoro
- 14.141. LATER 如何为所有标题添加默认标签
- 14.142. LATER 如何搜索没有标签的内容
- 14.143. LATER orgmode怎么把类excel表格在复制粘帖的时候自动转换为orgmode表格?
- 14.144. MAYBE/FUTURE orgmode如何搜索反引用的问题
- 14.145. LATER 考虑设置orgmode子标题状态变化之后,父标题根据优先级自动调整
- 14.146. MAYBE/FUTURE orgmode emacs如何收藏邮件,这个需要考虑一下
- 14.147. LATER 考虑一下orgmode导出配置的路径程序,是否适合修改目录结构的情形
- 14.148. LATER 如何在emacs orgmode中方便地创建一个文章(博客)
- 14.149. LATER orgmode中link id缓存与publish相关的缓存
- 14.150. WAIT/FORWARD emacs orgmode导出文档的created time有些问题
- 14.151. MAYBE/FUTURE 意外的发现,org文件可以做为.csv表格文件直接导入,只不过分隔符为 '*' 而非','
- 14.152. MAYBE/FUTURE orgmode如何为标题创建时间?(便于导出成为create time)
- 14.153. WAIT/FORWARD orgmode设置导出文件名称
- 14.154. LATER orgmode为什么 "C" 无法用 == 来修饰?
- 14.155. NEXT refile的时候能否根据状态自动指定目标文件?
- 14.156. LATER 如何让 example block 中的 '*' 不会被解析为主题。
- 14.157. LATER 额外的todo切换操作
- 14.158. REFERENCE 关于habit的TODO项目
- 14.159. REFERENCE Orgmode如何显示近几天的Agenda?
- 14.160. REFERENCE Orgmode Agenda视图显示调整
这里是学习Emacs Orgmode过程记录的笔记,可供日后查阅以及参考。
1 标题与大纲
1.1 语法
一级标题用"* ",二级标题用"** ",以此类推,最多10级,注意'*'后面的空格。
1.2 配置
配置默认启动的折叠方式
如果对全局起作用,需要设置org-startup-folded变量,设置值可参见
C-h v org-startup-folded
,在emacs启动配置中添加如下类似值:;;set initial folded state. (setq org-startup-folded 'content)
如果仅对一个文件起作用,则为文件添加如下类似元数据:
#+STARTUP: overview #+STARTUP: content #+STARTUP: showall #+STARTUP: showeverything
配置折叠状态下的编辑动作
实践发现,在折叠的时候删除或者追加,有些影响可能会在展开的时候才能看见。比如删除一个字符等等,所以不知道的情况下建议不要在折叠的时候删除字符。但是我们可以添加配置来修改这时的行为。配置变量是org-catch-invisible-edits,可以通过查看
C-h v org-catch-invisible-edit
来查看设置的值含义。;;set action when edit invisible content (setq org-catch-invisible-edits 'show-and-error)
1.2.1 调整大纲缩进显示
- 默认显示缩进好的大纲内容
加入如下配置
(setq org-startup-indented t)
或者加入如下选项到文件使得只在当前文件生效:
#+STARTUP: indent
1.3 操作
展开、折叠所有章节
输入
S+Tab
对光标所在章节进行展开、折叠
输入
Tab
对当前子树标题使用大纲方式显示
输入
C-c C-k
切换到初始的浏览状态,也就是
org-startup-folded
设定的状态。输入
C-u C-u TAB
显示全部,包括
Drawers
。输入
C-u C-u C-u TAB
跳转至上级标题
输入
C-c C-u
跳转至上一个/下一个标题(无视级别)
输入
C-c C-p/n
跳转至上一个/下一个标题(同级别)
输入
C-c C-f/b
当前标题升级/降级,不包括子树
输入
M-LEFT/RIGHT
当前标题以及子树升级/降级
输入
M-S-LEFT/RIGHT
当前标题上移下移??
输入
M-UP/DOWN
当前子树上移下移??
输入
M-S-UP/DOWN
在光标处插入当前级别标题
输入
M-Ret
光标在文本中,则将内容一分为二,换行后插入同级别标题;在空白则在之下插入当前所在级别标题。
在当前标题子树后插入同级别标题
输入
C-Ret
切换到大纲浏览状态
输入
C-c C-j
进入大纲浏览状态之后,状态栏有提示,右侧也会新开一个buffer提示有特殊的大纲浏览状态帮助命令。例如:
切换上一条/下一条标题
输入
Up/Down
直接进入相应标题并退出大纲浏览状态
输入
Ret
搜索
输入
/
在某标题上循环切换视图
输入
Tab
退出大纲浏览视图
输入
C-g
另外直接输入文字也可进行搜索。
切换标题和正文状态
输入
C-c *
输入之后,会进行标题切换,将文本、区域、或条目转换成相应位置下的子标题,或反之。
选择当前Entry
输入
M-h
输入之后,会高亮显示当前光标所在entry的内容。例如光标在标题上,则高亮标题以及子树内容,持续按
M-h
会继续以同级别下entry为单位,扩展选择范围,这里的entry可以是段落、标题、列表项等等,取决于光标所停留的位置。选择当前光标所处标题以及子树
输入
C-c @
输入之后,会高亮显示当前光标所在子树的内容,不论光标是否停留在标题上。
删除当前所在标题及子树
输入
C-c C-x C-w
输入之后,无论光标是否在标题上,都会将其所在标题连同子树删除(剪切)。
复制当前所在标题及子树
输入
C-c C-x M-w
输入之后,无论光标是否在标题上,都会将其所在标题连同子树复制。
2 TODO 项目
2.1 语法
TODO是一种包含状态的特殊标题
在标题标记后面加上相应状态名,便成为TODO项目。状态默认为TODO和DONE,可以自行配置。
* TODO 这是一个TODO项目 ** TODO 这是TODO的子项目
带有统计子项目的TODO项目
在一个待办标题中添加子待办标题,然后在待办标题中添加
[%]
或者[%]
。 每当子标题更新时,父标题上面的相应比例会自动统计变化,如果强制刷新,则在父标题相应的比例标记上输入C-c C-c
。* TODO 这是一个统计子项的TODO项目 [0/2] ** TODO 这是TODO的子项目1 ** TODO 这是TODO的子项目2
当然这样也行:
* TODO 这是一个统计子项的TODO项目 [0/2] ([0%]) ** TODO 这是TODO的子项目1 ** TODO 这是TODO的子项目2
2.2 配置
2.2.1 增加TODO状态
在配置文件中加入类似如下代码:
;;set status for TODO. (setq org-todo-keywords '((sequence "INBOX" "NEXT" "LATER" "WAIT/FORWARD" "MAYBE/FUTURE" "|" "CANCEL" "DONE")))
2.2.2 配置状态颜色
通过org-todo-keyword-faces的设置实现,添加内容如下
;; color for todo keywords (setq org-todo-keyword-faces '( ("INBOX" . (:foreground "blue" :weight bold)) ("NEXT" . org-warning) ("LATER" . "yellow") ("WAIT/FORWARD" . "blue") ("MAYBE/FUTURE" . "purple") ("DONE" . "green") ("CANCEL" . "grey") ))
2.2.3 配置状态快捷切换键
通过定义状态时将快捷按键放在状态后面,用‘()’括起来,添加内容如下:
;;set status for TODO. (setq org-todo-keywords '((sequence "INBOX" "NEXT(n)" "LATER(l)" "WAIT/FORWARD(w)" "MAYBE/FUTURE(m)" "|" "CANCEL(c)" "DONE(d)" )) )
2.2.4 配置状态切换的跟踪时间戳
当TODO列表切换到结束状态时,会自动为其添加一个结束时候的时间戳(转变为非结束状态时会将其移除)。
;;add timestamp when todo change to done. (setq org-log-done 'time)
2.2.5 配置优先级颜色和内容
设置如下:
;;set priority (setq org-highest-priority ?A) (setq org-lowest-priority ?D) (setq org-default-priority ?A) (setq org-priority-faces '( (?A . org-warning) (?B . (:background "DodgerBlue" :foreground "black" :weight bold)) (?C . (:foreground "SkyBlue" :weight bold)) (?D . (:foreground "DodgerBlue" :weight bold)) ) )
2.3 操作
TODO项目相关操作:
M-S-Ret
当前位置插入TODO项目,默认状态和上一条统计TODO状态一样
C-S-Ret
当前级别子树后面插入TODO项目C-c C-t
当前所在TODO项目状态切换(不一定要在TODO标题上面)
默认状态下,循环切换次序是TODO->Done->普通标题(只有*)。
S-RIGHT/S-LEFT
当前所处TODO标题上进行状态切换
默认状态下,循环切换次序是:TODO->DONE->普通标题
C-c
修改优先级(包括A,B,C三个级别,不一定在TODO标题上面)
S-UP/S-DOWN
切换优先级
默认次序是A->B->C->无。
C-u C-c C-t
快捷切换状态,输入后会提示你要输入的状态,可以支持Tab补全,可以用快捷按键替代。
刷新子项目完成情况统计
光标停留在
[%]
或者[%]
之上,输入C-c C-c
类似状态切换的note,直接添加一个note
添加的位置和状态切换的note位置一样,输入:
C-c C-z
3 格式
3.1 段落
一个独立段落需要段落之上有一个空行。如果没有空行则上一段的换行符号自动变成空格。如果强制换行而不用空行则在行尾输入 \\
。
3.2 字体
字体格式一般会采用特定标记来实现,标记界限周围要和其他字符隔开,不能紧邻其他字符。
*粗体* +删除线+ _下划线_ =等宽= 或 ~等宽~ /斜体/
注意,等宽字体可以做为行内代码引用使用。例如: input
4 列表
4.1 语法
Org 能够识别有序列表、无序列表和描述列表。
无序列表项以‘-’、‘+’或者‘*‘开头。
有序列表项以‘1.’或者‘1)’开头。
描述列表用‘::’将项和描述分开。
有序列表和无序列表都以缩进表示层级。只要对齐缩进,不管是换行还是分块都认为是处于当前列表项。同一列表中的项的第一行必须缩进相同程度。当下一行的缩进与列表项的的开头的符号或者数字相同或者更小时,这一项就结束了。当所有的项都关上时,或者后面有两个空行时,列表就结束了。
例如:
+ 列表如何处理缩进 这样处理 - 子列表 子列表缩进 * 子子列表 子子列表缩进内容,一般而言,尽量不用'*'做为列表的项目 子列表内容 列表内容
总之,列表项下的内容,如果属于该列表项,那么就将其缩进成大于该列表项首行的标号再输入相应文字。
另外,某一列表可以带有checkbox成为任务列表,实际就是在列表项开始加入一对中间有空格的方括号[ ]。任务列表可以有子任务,如果想要显示任务的完成情况计算总进度,只需要在总任务后面添加一对方括号,里面加上%或/ 如[%]
,[/]
。
4.2 操作
M-RET
插入同级列表项C-RET
当前子树尾部插入同级别列表项M-S-RET
插入有 checkbox的同级列表项C-c C-c
改变 checkbox状态C-c -
更换列表标记,如果当前项不是列表,会被转化成列表。S-LEFT/RIGHT
更换列表标记,类似C-c -
。M-left/right
改变列表项层级关系,不包括子项M-S-left/right
改变列表项层级关系,包括子项构成的子树M-up/dowm
上下移动列表项=TAB(新的空的列表条目中) 调整缩进级别
如果新的条目中还没有文字,TAB 会调整到合适的级别。比如,我们在一个列表下新开一空行,然后TAB,这样之后敲入的内容将在相应的缩进之中(实践发现,如果Tab之前敲入内容了,那么Tab不会缩进)。 如果列表项下事先已经有了未缩进的内容(即缩进级别和列表项目标号一样),那么该内容应该不属于相应列表项之内,如果逻辑上让其属于列表项,需要将其缩进。缩进的方法不是直接在相应位置或者行敲
TAB
,有两种方法将这部分内容调整缩进使之属于列表项:- 在内容前插入一空行,然后空行内敲入
TAB
,然后空行尾DEL
或C-k
将空行下的内容自动‘拉上来’实现缩进。
2)在相应内容上插入一个
SPC
,然后再键入 =TAB=。注意,以上缩进方式缩进的级别自动和上一行缩进成同样级别。
- 在内容前插入一空行,然后空行内敲入
5 表格
5.1 语法
5.2 操作
输入表格
需要输入表头如
|Name|Pone|Age
之后,按C-c RET,就可以生成整个表格的结构(也可输入Tab调整)。输入表格分割线
输入
|-
之后,按C-c RET,就可以生成整个表格的结构(也可输入Tab调整)。创建表格
输入
C-c |
,会提示生成指定行列的表格。在下一行创建表格分割线
在当前表格中输入
C-c -
。跳转下一项
输入
TAB
可以自动调整表格对齐并且跳转到下一栏,如果是一行末则新开一行并跳入新行第一栏。输入之后,产生类似如下表格:
te
在单元格内换行
输入
M-Ret
将区域转换成表格
输入
C-c |
这里,对一片区域,每行用空格或者TAB分割开,选中该区域后,输入这个命令,便会将相应的内容转换成表格。
移动光标到当前所在单元格首部
输入
M-a
移动光标到当前所在单元格尾部
输入
M-e
将当前光标所在表格项设置为空
输入
C-c <SPC>
删除当前光标所在列
输入
M-S-<Left>
在当前光标所在列左插入一列
输入
M-S-<Right>
这里注意,如果光标在表格最后一列的右面,运行这个命令就是在表格最右侧追加一列。
左/右移动当前光标所在列
输入
M-<left>/<right>
复制单元格
输入
C-c C-x M-w
粘帖至单元格
输入
C-c C-x C-y
6 块标记
6.1 语法
单行的例子内容以": "开头,注意后面的空格。
6.2 操作
加入"#+BEGIN_SRC和#+END_SRC"配对:
行首输入`<s Tab`
加入"#+BEGIN_EXAMPLE和#+END_EXAMPLE"配对:
行首输入`<e Tab`
加入"#+BEGIN_HTML和#+END_HTML"配对:
行首输入`<h Tab`
输入
M-TAB
例如:
#+BEGIN_SRC eli #+END_SRC
键入
eli
后输入M-TAB
, 即可补全出选项,例如:#+BEGIN_SRC elisp #+END_SRC
对代码块进行求职
在代码块上输入
C-c C-v C-e
7 链接
7.1 语法
脚注
用
[fn:1]
的方式插入脚注,要求脚注定义放在第0列,不能有缩进而在相应的解释部分插入类似如下:[fn:1]本文参考自xxx。
其中
[fn:1]
部分是可以点击相互切换的。例如:
The Org homepage[fn:1] now looks a lot better than it used to. ... [fn:1] The link is: http://orgmode.org
外部链接
链接的格式是:
[[链接地址][链接内容]]
如:
[[http://orgmode.org/orgguide.pdf][grgguid.pdf]] [[file:/home/maple/图片/test.jpg][a picture]]
如果去掉标签,则能直接显示图片:
[[file:/home/maple/图片/test.jpg]]
这里,为了便于展示源代码, 我加上了转义,用于对单行例子的引用,如果没有": "转移字符,那么直接会在orgmode显示解析后的结果。
7.2 配置
保存链接的配置:
(global-set-key "\C-cl" 'org-store-link)
配置之后,每次输入
C-c l
之后会将当前位置所在的条目链接保存起来,之后输入C-c C-l
的时候,会提示选择已保存的链接,默认选择最近一次保存的条目链接。启用全局唯一id链接配置
如果启用了
org-id.el
以及设置了org-id-link-to-org-use-id
那么运行C-c C-l
会保存两个链接:一个是用户可读的链接(包含文件名和标题,当标题的文件和位置变化可能会导致原引用该处的链接不可用);一个是具有全局唯一id的链接(在相应标题子树被转移到其它位置的时候,这个链接仍然不变)。其实保存链接内容的同时也创建了相应的链接,为创建全局唯一id的链接,运行之后,会导致相应子树标题下追加了如下属性:
* 子树标题 :PROPERTIES: :ID: 60aaa787-86e8-43a3-9a33-73d3eb7e6f58 :END:
引用的格式举例
[[id:60aaa787-86e8-43a3-9a33-73d3eb7e6f58][子树标题]]
下面给出一个配置的例子:
;;Settings for global id link. (require 'org-id) (setq org-id-link-to-org-use-id t)
7.3 操作
保存链接
输入
C-c l
这项功能需要事先配置好
org-store-link
按键映射,配置好后这个动作会将当前位置所在条目的链接保存起来,供之后插入链接等使用。插入链接
输入:
C-c C-l
这样会列出已经保存的链接供选择,也会在底部回显区会提示你输入链接网址和描述文字(支持事先保存的链接补全),输入或选择完成后,链接插入完毕。 另外,在已有链接上输入该命令,可以在已有链接上进行修改。如果选择了具有全局唯一id的链接形式,不会因相应子树所处的文件等信息的改变而失效。
内部链接引用和定义 下面是内部链接引用和定义的例子
[[inner][内部链接引用]] #<<inner>>
记录内部链接地址
输入
C-c %
跳转到已记录的内部链接地址
输入
C-c &
不断地输入会不断地跳转到已经记录和定义的内部链接,可以跨buffer。
新建脚注
输入:
C-c C-x f
输入之后,如果当前光标已有脚注,那么会在定义和第一个引用之处跳转,否则新建一个脚注。
新建的脚注会在文档底部,有一个新开的标题"Footnotes",新建的脚注编辑好定义之后,再输入
C-c &
可以跳回刚才插入脚注的位置。
8 时间戳
8.1 语法
时间戳是一个具有特定格式的日期(可能带有时间和时间段)说明, 时间戳可以出现在树条目的标题和正文的任何地方,它能使条目只在特定的日期才出现在议程列表(Agenda)中。
时间戳前面可以加一些关键字来协助计划安排。例如表示任务应该完成的日期的截止期限(DEADLINE),用于指定任务开始日期的日程安排(SCHEDULE)。
主要有如下一些类型:
8.1.1 普通时间戳;可用于事件、约会
简单地给一个条目加上时间和日期,指明事件或约会发生的时间:
* Meet Peter at the movies <2006-11-01 Wed 19:15> * Discussion on climate change <2006-11-02 Thu 20:00-22:00>
8.1.2 具有时间间隔的时间戳:可用于周期重复的内容
时间戳可以包含一个时间间隔,表示事件不只在指定的时间发生,还在每隔一个特定的时间如 N 天(d)、周(w)、月(m)或者年(y)之后重复发生。如以下表示从2007-05-15开始每周2发生的会议事件
* Pick up Sam at school <2007-05-16 Wed 12:30 +1w>
8.1.3 日记样式的 sexp 条目
Orgmode 为支持更复杂的时间,支持的Emacs 日历/日记包(calendar/diary package)中的日记条目
* The nerd meeting on every 2nd Thursday of the month <%%(diary-float t 4 2)>
8.1.4 时间/日期段
两个时间戳用‘–’连接起来就定义了一个时间段.
** Meeting in Amsterdam <2004-08-23 Mon>--<2004-08-26 Thu>
8.1.5 非激活的时间戳
在方括号而不是尖括号中的时间戳,是未激活的,只是一个时间戳记录信息,它不会让一个条目显示在议程(Agenda)中。
* Gillian comes late for the fifth time [2006-11-01 Wed]
8.2 配置
配置保存clock历史?
;; To save clock history across Emacs sessions. (setq org-clock-persist 'history) (org-clock-persistence-insinuate)
8.2.1 配置空闲时间
当离开指定的时间后(离开电脑?Emacs?什么是离开?不操作?),再次工作时(实践是在调用了 clockin
命令),会提示你刚刚好象是离开了,让你选择如何处理离开的时间记录,或者减去,或者其它。
(setq org-clock-idle-time 15)
实践发现, 假设我 14:00
开始,不在emacs上,而是浏览网页了,到 14:15
emacs 会弹出对话框,提示我离开了15分钟。
按照提示操作,例如
g
表示从当前时间往前一定时间做为idle.
8.3 操作
8.3.1 插入一个时间戳
输入 C-c .
输入之后,会进入一个交互模式,默认是当前时间,可以通过 S-LEFT/RIGHT/UP/DOWN
选择一个指定的时间戳,插入之后的时间戳是激活的,会以'<>'括起来,只有日期信息没有时间,可以在日程视图中显示。
Calendar Navigation Shift-RIGHT Go forward a day Shift-LEFT Go backward a day Shift-UP Go to previous week Shift-DOWN Go to next week < Scroll calendar back 1 month > Scroll calendar forward 1 month . Go to Today
8.3.2 插入一个非激活的时间戳
输入 C-c !
输入之后,类似上面,通过 S-LEFT/RIGHT/UP/DOWN
选择日期插入。插入的时间戳不是激活的,会以'[]'括起来,不在Agenda中显示。
8.3.3 插入一个包含日期和时间的时间戳
输入 C-u C-c .
输入这个命令也会插入时间戳,与 C-c .
不同的是它插入的时间戳不仅包含日期信息,还包含时间信息。
8.3.4 插入一个包含日期和时间的非激活时间戳
输入 C-u C-c !
命令类似 C-u C-c .
只是插入的时间戳是非激活的。
8.3.5 修改插入的时间戳
光标停在待修改的项目上(年/月/日/时/分/秒)输入 S-UP
/ S-DOWN
, 如果 S-LEFT
/ S-RIGHT
则是修改日期。
8.3.6 插入设置为SCHEDULE的时间戳
输入 C-c C-s
会在当前标题下面插入一个带有"SCHEDULE"的时间戳,同样可以通过 S-LEFT/RIGHT/UP/DOWN
选择一个指定的时间。表示指定日期开始的项目,对于过期的日程安排会编辑为 今天
并给出提醒,直到被标记为 DONE
。也就是说,任务会自动推迟日期直到它被完成。(实践发现 C-u C-c C-s
会取消 SCHEDULE)
8.3.7 插入设置为DEADLINE的时间戳
输入 C-c C-d
会在当前标题下面插入一个带有"DEADLINE"的时间戳,同样可以通过 S-LEFT/RIGHT/UP/DOWN
选择一个指定的时间(貌似以天为单位)。在任务到期 org-deadline-warning-days
天前对即将即将到期以及已经过期的任务给出提醒。
8.3.8 打开Emacs Clendar
输入 C-c >
8.3.9 插入Emacs Calendar光标所在的日期到光标所在处
输入 C-c <
8.3.10 打开当前光标时间戳对应的一个Agenda视图
输入 C-c C-o
8.3.11 计算光标所在time range之间的天数
输入 C-c C-y
8.3.12 记录工作时间
可以动态记录工作时间,方便跳转和切换任务。
在任务开始、结束、中断的时候可以使用Org在相应的任务标题下添加一个时间日志,动态记录时间信息。相关指令如下:
C-c C-x C-i 开始当前条目的计时(clock-in)。这会插入一个 CLOCK 关键字和一个时间戳。加上 C-u 前缀,从当前已经计时的任务中选择任务。 C-c C-x C-o 停止计时(clock-out)。这会在开始计时的地方插入另一个时间戳。它会直接计算使用时间并插入到时间段的后面如 “=> HH:MM”。 C-c C-x C-e 为当前的计时任务更新进度。 C-c C-x C-x 取消当前的计时。当你误操作打开一个计时时,或者转而去做其他事情时,这个命令就很有用。 C-c C-x C-j 跳转到包含当前正在运行的计时的任务条目。用 C-u前缀从当前计时的任务中选择。 C-c C-x C-r 在当前文件插入一个包含像 Org 表格一样的计时报告的动态块。当光标正处于一个存在的块上时,更新它。 C-c C-c 在一个已经存在的计时表格之上时,更新它。 更新动态块。光标需要置于动态块 #+BEGIN 这行。
使用Clock-in的记录的任务并不是直接出现在Agenda中,通过 Agenda中的 v
命令提示,可以用Clock in 或者 All 视图显示出来。
C-u xxx
可以列出所有 clockin
的任务进行相应操作,同时可以看到当前进行 clockin
的任务,以及被新 clockin
打断的任务。
实践描述:
8.3.12.1 开始/切换任务(clockin)
C-c C-x C-i
会为当前标题下 LOGBOOK
属性追加一个 CLOCK
, 值为非活动的当前时间戳,表示开始当前任务(clockin),开始的时间为该时间戳。
当 C-c C-x C-i
另一个任务之后,会将当前被 C-c C-x C-i
的任务中断,将另外一个任务设为当前被 clockin 的任务。
C-u C-c C-x C-i
会对所有被 clockin
过的任务列出来,让你选择一个做为当前将被 clockin
的任务.
8.3.12.2 停止任务(clockout)
C-c C-x C-o
表示不在当前任务上工作(clockout
),于是 CLOCK
时间戳后面会追加一个持续时间,如 0:01
.
8.3.12.3 跳转到任务
C-c C-x C-j
会迅速跳转到当前正在进行 clockin
的任务处,不用到处找了。
C-u C-c C-x C-j
会列出所有被 clockin
过的任务,让你选择一个跳转过去。
8.3.12.4 NEXT 关于空闲时间
- 什么是空闲?
当离开Emacs不做动作,或者离开PC, 被定义为空闲。当到达空闲上限的时候,Emacs会弹出窗口提醒你选择如何处理空闲。
实践确认,
- 在Emacs中仅仅移动,不会认为是空闲。
- 停止在Emacs中不动,到达一定时限,会认为是空闲了。
- 在Emacs之外的程序中,比如浏览网页,到达空闲时间上限也会弹出空闲提示。
- 在相应的标题之外用EMACS进行编辑,不会认为是空闲。
- 空闲交互
默认是忽略,这样所有的空闲时间也记录在内。如果选择 'k' 会提醒你输入一个时间,表示这段空闲时间内,有多少不是空闲的时间。假设你输入20分钟,这样Emacs会将上次记录的时间再加20分钟做为上次的工作记录时间,即设置为:xxx-xxx+20min, 然后重现建立一个计时器,以当前为准记录开始。
提示的信息大概含义翻译出来如下:
[ ]
i/q
, 保持所有的idle时间为非空闲状态。意思是所有的空闲时间都被计入在clocked之内,就如同没有发生过idle一样。
理解:比如现在idle时间是1:00-2:00, i命令忽略所有空闲,即1:00-2:00都是计入clocked的,就当idle没有发生过。需要实践?
[ ]
k/K
, 指定保持的idle时长为非空闲状态。默认为所有(类似i),如果指定的时长小于默认的所有假设为x分钟,表示认为x分钟是非idle的,将在idle开始之后x分钟再clockout, 然后再在当前时间clockin.
理解:比如现在idle时间是1:00-2:00, k命令保持20分钟,则表示1:00-1:20都是计入clocked的。从1:20开始clocked out, 到2:00才clocked in。需要实践?
[X]
g/G
, 回退到之前指定时长的时间假设为x分钟,和k相反。意思是, 指定x分钟钱至现在的范围被记录,即idle开始立即clockout,然后在当前时间之前的x分钟的点上clock in.
理解:比如现在idle时间是1:00-2:00, g命令回退20分钟,则表示1:40之后都是计入clocked的。即从1:00clocked out, 到1:40有clocked in。
[ ]
s/S
, 从当前的时间减去idle的时间,类似保持了0的时长,和 i 相反。将所有的idle都不计入clocked, idle开始即clock out.(时间
s
确实从idle开始的时候就已经clocked out了)理解:比如现在idle时间是1:00-2:00, s命令认为所有idle时间都是空闲状态,即1:00-2:00都是clock out的,2:00开始才Clocked in。
[ ]
C
, 完全取消打开的timer就如同你从来没有进行clockin 一样, 需要实践?
[ ]
j/J
, 跳转到当前的clock, 来进行手动调整?
以上如果使用大写字母,那么会将你当前的状态记为clocked out.
8.3.12.5 如何调整错误的记录
8.3.13 计时器
除了记录工作时间,还有一种计时器,打开计时器可以正向或者反向记录相对时间。
简单描述,更多的参考手册,比如含有 C-u
前缀的命令变体
C-c C-x 0 启动一个计时器,从0开始记时 C-c C-x ; 启动一个计时器,提示用户输入,开始倒计时 C-c C-x \ 暂停记时 C-c C-x _ 停止记时间 C-c C-x . 插入当前记时值 C-c C-x - 插入一个list项目,项目名为记时值,然后可以输入简单描述 M-Ret 如果已经插入了上面的记时list,这个会继续插入下一条记时list项目
9 标签
9.1 语法
标签以":"做为开头和结尾,可以连续定义多个。 例如:
:boss:notes:
9.2 配置
标签是动态增加的,也可预定义,预定义的方式如下:
- 使用#+TAGS元数据进行标记,仅对当前文件有效:
#+TAGS: { 桌面(d) 服务器(s) } 编辑器(e) 浏览器(f) 多媒体(m) 压缩(z)
- 修改.emaxcs配置
;;set tags (setq org-tag-alist '( (:startgroup . nil) ("room" . ?r) ("outside" . ?o) (:endgroup . nil) ("工作" . ?w) ("生活" . ?l) ("学习" . ?s) ))
注意,加入一个 group的标签默认是互斥的标签,但是也可在添加标签操作的时候指定不是互斥。
9.3 操作
9.3.1 为当前标题添加标签
标题上输入 C-c C-c
, 然后按照提示操作, 即可为当前标题添加相应标签。
正文上输入 C-c C-q
, 然后按照提示操作, 即可为当前正文所在最近标题添加标签。
9.3.2 其他
键入 :
后, M-Tab
自动提供标签的补齐。
更方便的做法是在正文部分用 C-c C-q
或直接在标题上用 C-c C-c
创建标签,这种方式可以列出所有预定义的标签以便选取。
10 Capture-Refile-Archive
10.1 概念
Capture用来迅速收集一些临时产生的想法,尽可能少的打断当前的工作状态。通过指定好快捷方式和相应的Capture目标位置后,在任意时间运行捕获命令会将这些临时的记录存放在一个指定的位置,空闲之时再做进一步整理。
Refile以特定的命令,用来将之前Capture的内容直接转移到特定的地方,避免了手动剪切(复制)和粘帖。
10.2 配置
10.2.1 Capture的配置
不同的管理方式可能会导致不同的配置,但是一般都包含两个方面:首先设置好一个启动Capture的快捷方式,再配置用于存储Capture信息的目的地。 这里以gtd管理为例给出一个配置例子:
;;Setting for gtd captures ;;Directory for capture files. (setq org-directory "~/mydata/orgmode/") ;;Default capture files. (setq org-default-notes-file (concat org-directory "gtd/inbox.org")) ;;Capture template (setq org-capture-templates '( ("t" "Tasks" entry (file+headline "gtd/inbox.org" "Tasks") "* INBOX %?\nTime:%T\nFrom:%F\n") ("p" "Projects" entry (file+headline "gtd/inbox.org" "Projects") "* %?\nTime:%U\nFrom:%F\n") ("i" "Item notes" item (file+headline "gtd/inbox.org" "Items") "+ %?\n Time:%U\n From:%F\n") ("m" "Misc notes" plain (file+headline "misc.org" "Notes") "-----------------------------------------------------\nTime:%U\n %?") ) ) ;;set tags ;;where?(h/o/w),what?(c/l/s),when?(gtd|immeiately,wait,action),who?(my gtd,others),why?how?(delete/archieve/schedule) (setq org-tag-alist '( (:startgroup . nil) ("home" . ?r) ("office" . ?o) ("way" . ?w) (:endgroup . nil) ("职业" . ?c) ("生活" . ?l) ("学习" . ?s) ))
10.2.2 Refile的配置
主要配置两个方面的内容: Refile的目标(org-refile-targets),以及Refile时选择目标的策略(org-refile-use-outline-path会自动补全文件名以及标题,目标的格式类似文件路径的格式,包含文件和标题)。 org-refile-targets对应的可以是路径可以是列表,具体参考其中的文档,需要注意的是:
- 如果是列表
- 该变量中的文件路径需要是全路径;文件中需要有一个标题才能在做
C-c C-w
补全的时候显示出来,空文件不行。 - 如果是一个文件路径
- 如果org-refile-targets是一个文件,则:这个文件可以是一个文件列表,使用这个列表的文件做为refile目标; 每个文件项占一行(不要有""),文件项可以是对于org-directory的相对路径; 这样文件内容变化之后,不用重新载入配置也能在
C-c C-w
中显示出新增的文件; 如果有一项是文件目录,那么不要再次包含该目录下的文件,因为这样会在agenda view中导致重复显示。
;;targets for refile (setq org-refile-targets (quote ( (nil :maxlevel . 9) (org-agenda-files :maxlevel . 9) ) ) ) ;;outline path for refile (setq org-refile-use-outline-path 'full-file-path) ;;org-outline-path-complete-in-steps (setq org-outline-path-complete-in-steps t) ;;create new parents while refile (setq org-refile-allow-creating-parent-nodes 'confirm)
10.2.3 Archive的配置
具体内容可以参见: C-h v org-archive-default-command
, C-h v org-archive-location
, C-h v org-archive-save-context-info
10.2.3.1 配置归档位置
将内容根据“年-月-日-包含文件名的标题-被归档的标题”的层次,归档在指定路径的文档中,如下
(setq org-archive-location (concat org-directory "gtd/_archive/201511_archive.org::datetree/* Archive from %s")) ;;(setq org-archive-location (concat org-directory "gtd/_archive/session" (format-time-string "%Y%m") "_archive.org::datetree/* Archive from %s"))
10.2.3.2 配置归档包含的信息
归档之后,被归档节点属性包含:时间、文件、标签、todo状态、分类、节点在归档前的路径等信息:
(setq org-archive-save-context-info '(time file ltags itags todo category olpath))
10.2.3.3 举例
如上配置之后,例如
*Title1 **DONE sub title1 CLOSED: [2015-11-27 五 14:17] - State "DONE" from [2015-11-27 五 14:17] ***subsub title1 ****DONE subsubsub title1 CLOSED: [2015-11-27 五 14:18] - State "DONE" from [2015-11-27 五 14:18] ****subsubsub title2 ****subsubsub title3 ***subsub title2 **sub title2
注意以上格式中,标题前面应该和'*' 之间有一个空格。执行 C-c C-x C-a
之后,会在相应路径生成一个201510_archive.org文件,追加了如下内容:
*2015 **2015-11 十一月 ***2015-11-27 星期五 ****Archive from orgmodetest.org *****DONE subsubsub title1 CLOSED: [2015-11-27 五 14:18] :PROPERTIES: :ARCHIVE_TIME: 2015-11-27 五 14:23 :ARCHIVE_FILE: ~/test/emacs/orgmodetest.org :ARCHIVE_TODO: DONE :ARCHIVE_CATEGORY: orgmodetest :ARCHIVE_OLPATH: Title1/sub title1/subsub title1 :END: - State "DONE" from [2015-11-27 五 14:18]
10.3 操作
基于以上配置,我们可以操作如下:
启动Capture
输入
C-c c
输入之后会提示选择捕获何种类型的信息,提示信息和选择命令取决于之前设置的配置变量
org-capture-templates
。选择将待捕获的信息存于"Tasks"标题之下
输入
t
具体如何输入取决之前的配置如何,这里输入之后会打开一个Capture Buffer,用于输入将要被记录的信息,其中按照预先配置好的模板,已经预先插入了一些基本信息(如时间、捕获信息时所处位置等等)。
完成Capture
输入
C-c C-c
输入之后,会将buffer中相应的信息插入到之前配置好的位置(例如某个文件中的某个标题之下),然后回到之前被中断的工作状态。
取消Capture
输入
C-c C-k
取消捕获的动作,回到之前被中断的工作状态。
访问存放Capture的文件Buffer
输入
C-u C-c c
输入之后,会提示和
C-c c
一样的信息,选择相应的捕获类型后,会直接打开相关的文件,具体是何文件,取决于事先设置的信息。访问上次捕获所处的文件Buffer
输入
C-u C-u C-c c
类似前面,捕获访问的是记录上次捕获的文件Buffer,并自动定位到其中上次捕获的信息之上。
以剪切方式Refile
输入
C-c C-w
输入之后,会提示Refile的目标位置(在org-agenda-files中列出),支持Tab补全,选择好相应的文件之后,可以继续将文件内的标题也类似路径的方式输入(也支持TAB补全),选择好之后,回车会将相应的内容移动到对应的目标位置。注意:移动的内容可以是用Mark方式选择的区域,或者当前光标所在的子树,在执行
C-c C-w
之后有提示。以复制方式Refile
输入
C-c M-w
输入之后,会提示Refile的目标位置(在org-agenda-files中列出),支持Tab补全,选择好相应的文件之后,可以继续将文件内的标题也类似路径的方式输入(也支持TAB补全),选择好之后,回车会将相应的内容复制到对应的目标位置。注意:复制的内容可以是用Mark方式选择的区域,或者当前光标所在的子树,在执行
C-c C-w
之后有提示。访问Refile的目标对应Buffer
输入
C-u C-c C-w
输入之后,会提示和
C-c C-w
一样的信息,选择相应的位置后,会直接打开相关的文件。访问上次Refile所处的文件Buffer
输入
C-u C-u C-c C-w
类似前面,访问的是记录上次Refile的文件Buffer,并自动定位到上次Refile目标的信息之上。
输入
C-c C-x C-a
这会默认将当前标题归档为同名,但是后缀为
.org_archieve
的归档文件(无论状态是不是done)。这个命令具体会怎么执行,会根据org-archive-default=command
的设置而定, 默认值为:org-archive-subtree
. 归档后,相应的标题会转移到归档文件中的相应时间/来源文件名标题中,并且在归档标题项,会有属性指明该文件归档前是来自哪个文件的哪些父标题。归档命令
C-c C-x C-s
或者C-c $
- 执行
org-archive-subtree
, 将所选内容归档至指定文件指定标题,具体可通过org-archive-location
指定。 C-u C-c C-x C-s
- 类似前面,但是归档之前会检测被归档的标题子标题是否有open的todo项目,如果没有就移动,否则提示。如果光标不再标题,则对所有顶级标题开始依次遍历并检测归档。
C-u C-u C-c C-x C-s
- 类似前面,但是检测之时,检测的是过期的时间戳,而非todo项目。
以上命令中,第一个经常用到,后面两个不怎么用,如果保存被归档内容的更多信息,需要配置
org-archive-save-context-info
, 归档之后,标题中的链接和引用仍然有效。
11 Agenda
11.1 操作
调出Agenda显示交互界面
输入
C-c a
输入之后,根据提示选择想要显示的视图种类。
11.1.1 交互操作
调出Agenda交互界面之后,可以进行如下交互操作(注意:操作作用范围是相应的agenda文件)。
限定Agenda显示内容的范围
输入
<
输入之后,会切换Agenda视图的搜索范围,依次为“没有限定”、“限定当前buffer”、"限定当前子树"。
取消对Agenda view的范围限定
输入
>
根据时间戳列出日历表日程项目
输入
a
列出所有TODO项目
输入
t
列出特定状态的TODO项目
输入
T
输入之后,需要进一步输入需要列出的状态关键字,以完成显示。
列出指定标签的内容
输入
m
输入之后,再输入标签名,如果不输入标签名,默认显示所有。
搜索包含指定字符串的标题
输入
s
输入之后,再输入待搜索字符串即可列出所有包含该字符串的标题(字符串可能在内容中)
搜索TODO项目字符串
输入
S
同上,不同之处是,搜索的是TODO标题项目,而不是普通标题。
搜索字符串
输入
/
输入之后,再输入待搜索字符串将会列出所有包含该字符串的地方。
11.1.2 交互命令:
进入Agenda中后,会有如下提示:
Global list of TODO items of type: ALL Available with `N r': (0)[ALL] (1)INBOX (2)NEXT (3)LATER (4)WAIT/FORWARD (5)MAYBE/FUTURE (6)CANCEL (7)DONE
只显示某一项,如只显示NEXT的内容
输入
2 r
重新刷新当前 Agenda
输入
r
切换是否显示当前行所在buffer内容
输入
<
11.2 实践测试时间显示的Agenda
- State "REFERENCE" from
如果想同时显示状态的,以及时间的日程,那么使用 'n' 命令。
如果只显示状态的标题,那么使用 't' 命令。
如果只显示时间的日程,那么使用 'a' 命令。
结果发现,时间戳无论是在标题中还是标题内容中,只要时间戳是激活的,那么就会在agenda view中'a'命令视图中相应的时间线上显示对应的标题。
如果是子标题中的内容有时间戳,那么相应时间线上的标题是最近的子标题,而非父标题。
如果同一个标题有多个内容是时间戳,那么会在时间线上对应的多个时间点上多次显示相应的标题(而非内容)
如果是时间区间,那么也会显示出来。
如果是状态的切换,那么在Agenda view也会在对应的时间以"State" 提示标题在某个时间切换成什么状态。
如果是使用Clock方式记录时间,那么在Agenda view中也会在对应的时间以 "Clocked" 提示相应的标题。
直接的时间戳
11.2.1 标题带有激活时间戳
11.2.2 标题无激活时间戳
11.2.3 标题无激活时间戳但是内容有时间戳
内容有时间戳
11.2.4 标题无时间戳,内容有多个时间戳
内容中有上午的时间戳
内容中有下午的时间戳
内容中有时间区间
11.2.5 标题有非激活的时间戳
11.2.6 NEXT 标题有状态标记
- State "NEXT" from
11.2.7 NEXT 标题状态和时间戳
- State "NEXT" from
11.2.8 LATER 标题有状态, 子标题也有状态,有的有时间戳
- State "LATER" from
11.2.8.1 NEXT 无时间戳状态子标题
- State "NEXT" from
11.2.8.2 NEXT 有时间戳状态子标题
- State "NEXT" from
11.2.9 标题时间区域
11.2.10 标题非激活时间区域
11.2.11 标题被Schedule
11.2.12 标题一定时间内的未来被Schedule
11.2.13 标题已经进入Deadline
11.2.14 标题将来一定时间进入Deadline
11.2.15 标题有Schedule和Deadline,已经Schedule
11.2.16 标题有Schedule和Deadline,尚未到Schedule
11.2.17 标题的Schedule在过去
11.2.18 DONE 标题的Schedule在过去2已经Done
- State "DONE" from
12 导出
12.1 操作
导出为特定格式
输入
C-c C-e
输入之后,会默认将当前Buffer导出为特定格式,期间需要输入交互信息指定导出为html还是pdf;如果需要其它的导出选项,比如将当前子标题导出为特定格式,需要根据交互命令来做(比如C-s是切换导出范围)。
12.2 其它
12.2.1 导出PDF格式的时候,链接上有红色的框框,怎么去掉?
Options:
#+LaTeX_CLASS_OPTIONS: [colorlinks]
or properties:
:EXPORT_LATEX_CLASS_OPTIONS: [colorlinks]
13 其它
搜索sparse tree
输入
C-c /
输入之后,会提示你搜索对应的内容,输入你想搜索的内容后可以看到相关内容以及相关的tree。
导出
输入
C-c C-e
输入之后,进入交互命令,可以选择各种需要导出的格式。
13.1 建议
13.1.1 列表与标题
建议少用列表,多用标题。
列表中的段落尽可能少,层次尽可能浅;多用标题也方便定位和缩进(标题过多,会导致目录复杂?)。
- 建议少用断行,多用段落。
13.1.2 列表与换行
想到一个方法解决列表内多段落的问题。
换行
杜绝硬换行的习惯, 尽量使用空行表示换行。
硬换行用“\\”,但是输入不便且有些情况不支持(如MobileOrg),所以想要换行,就新起一段落,那么新行前多一个空行。
这是一个新行,也是新段落。
一个段落,实际就是一行。逻辑关系有标点表示。
列表内换行
用描述列表
有时为美观,列表第一换行若用一空行则显得与列表项标题相距有点远,并且第一行内容一般也很少,一般都是总体描述性文字。所以,建议第一行是简短描述时用描述列表,第一行在描述的“::”后,之后的段落也用空行。若直接第一行就很长不是描述,那么不用描述列表,并且宁可与列表项标题多空一行,也不用断行符。
13.2 感想
学习orgmode主要分为如下几个阶段:
基本标记语法阶段
可以在简单场合写作简短的评论、文章使用,需要关注的内容可以是:标题、格式、列表、链接、表格、块标记
日程管理阶段
对基本标记语法掌握之后,进一步掌握日程管理并利用其中的功能,需要关注的内容可以是:
发布阶段
对已有内容整理、组织、发布成公开格式
13.3 注意
如果Checkbox,则最好一行,如果是多行的Checkbox, 那么导出的效果将会把 + [ ]
放到第一行,其它的全在新行开始。
13.4 意外
在时间戳的开始按下 S-<up>
/ S-<down>
会切换激活与非激活时间戳。
13.5 orgmode与mobile org整合
参考相关文档:MobileOrg 学习本文之前,需要首先了解Orgmode相关知识,至少应该知道:Orgmode可用于轻量级文档标记、项目管理、以及内容发布。
MobileOrg是一个使用Org mode的移动端应用程序。目前支持IOS和Android系统。MobileOrg提供离线浏览(Viewing)和捕获(Capture)在真实计算机上的Org mode系统内容。它允许你为已有的entries记录修改。
本文中:MobileOrg是Mobile端的一个应用程序,运行在Android(也有IOS的MobileOrg);Org是PC端Emacs的一个插件应用,对应其Orgmode模式。
文档中描述如何用Org创建可以通过MobileOrg显示的文档格式,以及如何将Mobile端的MobileOrg中修改和捕获的笔记,集成到PC端的“主” Org mode系统中(即Org与MobileOrg的同步),不涉及Agenda相关的操作。
13.5.1 配置
为了在MobileOrg中能够修改tags和TODO状态,你应该在PC端设置好自定义变量: org-todo-keywords
和 org-tag-alist
,使它们包含所有需要修改的重要的tags和TODO keywords,哪怕每个文件只使用其中的部分内容。MobileOrg也能通过in-buffer settings来为你提供TODO和tags设置,但是它只能读懂这些变量中的那些设置好的TODO状态集合以及tags。
假设我们想要使PC上的Org与移动设备上的MobileOrg保持内容同步(底层通过git机制,也可以是云存储、ssh、ftp等机制)。这里给出为实现这个目的,在PC需要做的配置工作(移动端的MobileOrg做为辅助工具,其配置和操作非常简单,在适当的时候会提及)。
13.5.1.1 在PC上添加使用MobileOrg的emacs配置
主要包括对Emacs中org-mode模块的加载以及与MobileOrg同步的路径。 例如:
;;Sync with mobileorg (require 'org-mobile) ;;mobile stage (setq org-mobile-directory "/home/miracle/mygitrepo/pocket/MobileOrg")
另外,可以通过 org-mobile-encryption-password
设置加密方面的内容。
在后面我们可知,在PC上的orgmode中有特定的命令将相关内容推送到这个目录中。
13.5.1.2 在PC上添加同步orgmode和MobileOrg的emacs配置
主要包括PC端和MobileOrg端状态与标记的设置,PC上被推送orgmode内容的源文件路径,以及PC上接收MobileOrg修改的缓存路径设置。
- 为被推送文件定义只属于该文件的状态和标记
被推送的文件可使用文件选项定义相关的状态和标签(实践发现不用定义文件的状态和标签也行),定义内容最好和PC上的相关状态变量(即
setq org-todo-keywords
)一致,或者是其子集。如果使用文件定义状态,那么可以将用于push到MobileOrg的文件中的状态设置选项如下:#+TODO: INBOX(i!) NEXT(n!) LATER(l!) WAIT/FORWARD(w@/!) MAYBE/FUTURE(m!) | CANCEL(c!) DONE(d!)
标记的设置类似。
- 设置状态关键字和被推送至MobileOrg的文件列表路径
如下
;;set status for TODO. (setq org-todo-keywords '((sequence "INBOX(i!)" "NEXT(n!)" "LATER(l!)" "WAIT/FORWARD(w@/!)" "MAYBE/FUTURE(m!)" "|" "CANCEL(c!)" "DONE(d!)" )) ) ;;mobile push (setq org-mobile-files (list (concat org-directory "gtd/mobile_org") ) )
- 设置接收来自MobileOrg内容的“缓存”目标文件路径
如下
;;mobile pull (setq org-mobile-inbox-for-pull (concat org-directory "gtd/from_mobile.org") )
13.5.2 原理
13.5.2.1 Mobile端的Mobile Org与PC端的Org同步
当我们在MobileOrg中与PC端的Org同步时,需要知道它不仅仅是从PC端获取(mobile端的pull)相应org文件用于浏览,同时也会追加(mobile端的push)被captured的entries(之后captured的内容会消失),并且指向被标记和修改的entries,这些内容被汇总在同步目录( org-mobile-directory
)中的 mobileorg.org
文件里。
13.5.2.2 PC端的Org与Mobile端的MobileOrg同步
- PC端的Pull
获取MobileOrg修改内容(PC端的pull)的时候,会将这些信息从
mobileorg.org
先转移到到org-mobile-inbox-for-pull
对应的文件中,并对指向的被标记的内容进行进一步操作,进而将能够自动处理内容同步到对应的文件中。 Pull的过程大致过程如下:- Org将会将
mobileorg.org
中的所有entries移动到org-mobile-inbox-for-pull
所指向的文件(假设为mobileinbox),每个被捕获的entry和编辑事件都会被做为这个mobileinbox中的顶级entry而存在。(进行操作之后,mobileorg.org
将会被清空) - 当将entries移动到
org-mobile-inbox-for-pull
指向的文件之后,Org将会开始执行在MobileOrg进行的修改。有些修改直接就会被应用了不需要额外的用户交互(例如修改tag、TODO状态、标题、正文文本可以被简单的应用)。而需要额外动作的entries会接收到一个:FLAGGED:的tag,这样它们才会很容易地被找到。当应用修改或者寻找一个entry之时出现了问题,目标entry将会保持在org-mobile-inbox-for-pull
中,并且被标记一个错误信息,我们需要之后手动解决这些问题,并将对应内容(entry)转移到期望的位置。 - (不熟悉)Org之后会生成一个包含所有flagged的entries的agenda view,用户可以遍历这些entries来做一些必要的动作。如果在对MobileOrg中的entry进行标记的时候一个note已经存储了,那么这个note会在光标处于对应agenda line的时候在回显区域显示出来。
关于 ?
在哪个特定的agenda中按下?
将会在另外一个windows中显示整个被标记的笔记(flagging note),也会将它push到kill ring中。所以,你可以在这个entry中使用?z C-y C-c C-c
保存哪个标记笔记为普通笔记。连续键入?
两次将会体同将 :FLAGGED:标签联通记录的标记笔记(flagging note)(在一个属性中被保存)一起被移走。这样,你可以用此来表示这个 flagged entry的处理已经完成。如果你不能够直接处理所有的flagged entries,你可以通过C-c a
回到这个agenda view。
- Org将会将
- PC端的Push
推送内容到MobileOrg端(PC端的push)的时候,会推送PC上设置的
org-mobile-files
对应的文件,该变量对应的文件路径是相对org-directory
的路径,默认使用org-agenda-files
,被退送的目标是org-mobile-directory
设定的位置。 Push的过程大致如下:- 拷贝
org-mobile-files
中的内容到同步目录org-mobile-directory
中,文档中提到,如果待推送的文件是一个链接文件,那么链接文件名称需要和源名称一致。 - 创建特定的agendas.org文件,这些文件可以是用户自定义的agenda view,由
org-mobile-agendas
来设定。 - 最后,orgmode会写一个
index.org
文件,这个文件包含所有到其他文件的链接,Mobile首先在Server中读取这个文件,然后把这个文件中列出的所有agendas文件和org文件下载下来,为了加速下载过程,MobileOrg只读取checksums3被改变的文件。
- 拷贝
13.5.2.3 Org与MobileOrg的同步目录
我们需要注意,在前面的讲述中所涉及到的同步,其实暗含了两种同步:
- Mobile端的MobileOrg与PC端的Org之间的同步(通过设定一个同步目录做为中转) 这个前面也讲到,主要是Mobile端的Sync(包含Push/Pull)操作,以及PC端的Push/Pull操作。
同步目录在云端与PC/Mobile端的同步 前面MobileOrg和Org同步之时,需要经过它们之间的一个共通的“同步目录”。这个目录在Mobile端和PC端的内容和结构需要首先保持一致,才能保证后续MobileOrg和Org之间数据的同步一致。所以,我们在同步PC端的Org与Mobile端的MobileOrg之前,先将PC端和Mobile端的目录通过某种方式进行同步。
这里同步目录的方式使用用git进行,PC端和Mobile端之间的同步目录用某个git托管服务器进行管理(例如github、bitbucket、或者自己的服务器),任意端的同步目录中数据发生变化后都要推送到托管服务器中,而任意端要读取最新数据都需要从托管服务器中拉取数据,同步目录中的数据更新之后,再进行后续MobileOrg和Org的数据更新。我们也可使用其它方式管理同步目录,比如云存储(百度云、DropBox等)、或者ftp、webdav、ssh等。
另外,Mobile端的git可以使用pocketgit工具。
13.5.3 同步操作
13.5.3.1 PC端的Org推送(Pull)
命令如下:
M-x org-mobile-push
推送之后,会在同步目录(即 org-mobile-directory
对应的路径)中建立 org-mobile-files
对应文件列表的路径结构,并拷贝相应文件到其中。
13.5.3.2 PC端的Org拉取(Push)
命令如下:
M-x org-mobile-pull
运行之后,其对应的 org-mobile-files
便包含了和MobileOrg同步的内容。
13.5.3.3 Mobile端的MobileOrg同步(Sync)
这里使用Android版本的MobileOrg,大致如下:
首先设置好同步目录,然后选择软件界面中的"Sync"按钮,即可完成同步(包含Pull和Push)。
13.5.4 使用举例
- PC上配置好相关变量和目录
- 手机上安装好MobileOrg也设置好同步目录
- 将PC和手机上的同步目录用github/bitbucket管理
- PC上同步目录更新:
git/pull
- PC上记录之前运行:
org-mobile-pull
可以看到手机上修改的内容。 - PC上记录,记录之后运行:
org-mobile-push
- PC上的git同步目录上传修改:
git add/commit/push
- 手机上的git同步目录下载更新:
git pull
- 手机上的MobileOrg同步(点击Sync)
- 手机上看到PC修改的内容
- 手机上修改并同步(点击Sync)
- 手机上更新同步目录:
git add/commit/push
- 回到步骤4。
缺点:列表中的段落,无法识别断行?
13.5.5 其它
13.5.5.1 关于Agenda
在手机端的Mobileorg上,看到的agenda内容是在 org-mobile-files
范围内的内容。
13.5.5.2 MobileOrg的实用之处-Capture
MobileOrg的特长目前看来非编辑和阅读,因为编辑和阅读所支持的格式不全,并且一般都在pc上进行编辑。MobileOrg存在的一个亮点是Capture。
在MobileOrg上直接捕获(Capture), 不设置父标题(即新建笔记到Capture下),在PC端运行 org-mobile-pull
的时候,直接将其抓取到 inbox-from-mobile
中,同步后MobileOrg上的相应Capture也会消失。
这样,手机中随手记下简短的内容,再汇集到PC上整理。
13.6 orgmode与jekyll的结合
主要介绍使用orgmode的发布功能生成html文件,然后将orgmode的发布功能与jekyll结合。
13.6.1 部署
13.6.1.1 jekyll环境
路径为 ~/mygitrepo/quietheart/mydoc/prepub/jekyll/
13.6.1.2 orgmode文档环境
路径为 ~/mygitrepo/quietheart/mydoc/prepub/orgmode/
13.6.1.3 关键文件结构
包含各自说明目录的作用
~/mygitrepo/quietheart/mydoc/prepub/jekyll/readme ~/mygitrepo/quietheart/mydoc/prepub/orgmode/readme
orgmode文档路径中待发布到jekyll的内容在如下路径:
~/mygitrepo/quietheart/mydoc/prepub/orgmode/_posts/ ~/mygitrepo/quietheart/mydoc/prepub/orgmode/data
对应的目录内的结构应该是jekyll的镜像子集。
其它路径
其他路径作用会根据需要确定。
如
~/mygitrepo/quietheart/mydoc/prepub/orgmode/categories/
当前暂时在_posts中写文,完成的文章可能会转移至categories。又如
~/mygitrepo/quietheart/mydoc/prepub/orgmode/_includes
这个里面包含为兼容jekyll显示,定义的样式,是html代码片段。
13.6.2 配置
做如下配置,使得orgmode导出的文件直接被导出到jekyll中:
;;;;Publish;;;; ;;(require 'org-publish);;old ;;(require 'org-html);;old ;;(require htmlize);;?? (require 'ox-publish) (require 'ox-html) (setq org-publish-project-alist '( ("org-docs" :base-directory "~/mygitrepo/quietheart/mydoc/prepub/orgmode/_posts/" :base-extension "org" :publishing-directory "~/mygitrepo/quietheart/mydoc/prepub/jekyll/_posts/" :recursive t :publishing-function org-html-publish-to-html :headline-levels 4 ; Just the default for this project. :language zh-CN :html-extension "html" :body-only t ;; Only export section between <body> </body> ;;:auto-preamble t ;;:section-numbers nil :with-toc nil :with-smart-quotes t ;;:with-fixed-width nil ;;:with-tables t ;;:with-tasks t ;;:with-todo-keywords t ;;:with-timestamps t ;;:with-footnotes t ;;:author QuietHeart ;;:email quiet_heart000@126.com ;;:with-email t ) ("org-data" :base-directory "~/mygitrepo/quietheart/mydoc/prepub/orgmode/data/" :base-extension "css\\|js\\|png\\|jpg\\|gif\\|pdf\\|mp3\\|ogg\\|swf\\|tgz\\|gz\\|tar\\|zip\\|rar\\|7z" :publishing-directory "~/mygitrepo/quietheart/mydoc/prepub/jekyll/data/" :recursive t :publishing-function org-publish-attachment ) ("org" :components ("org-docs" "org-data")) ) )
13.6.3 被导出文件与jekyll的集成
被导出文件按照类似jekyll的方式命名,即 日期-文章名.org
,再经过上述配置,orgmode导出的文件是只包含 body
部分的相同文件名但是扩展名为 .html
的文件。
这个时候,生成的文件已经能够直接被jekyll应用,集成到jekyll框架内生成的站点中,但是生成的文件格式还是可能有些错乱,而且没有包含jekyll所需的头信息( YAML Front Matter
信息)。
13.6.4 为待发布文章添加兼容jekyll显示的信息
为使得发布的文章能够更好的兼容jekyll信息,需要对待发布的 *.org
文章, 从最开始,依次添加如下额外信息。
13.6.4.1 orgmode html选项
首先添加文档选项信息,这些信息不直接体现在文章内容上。可以先输入 C-c C-e # html
以便插入html模板,插入的信息类似如下:
#+OPTIONS: html-link-use-abs-url:nil html-postamble:auto #+OPTIONS: html-preamble:t html-scripts:t html-style:t #+OPTIONS: html5-fancy:nil tex:t #+HTML_DOCTYPE: xhtml-strict #+HTML_CONTAINER: div #+DESCRIPTION: #+KEYWORDS: #+HTML_LINK_HOME: #+HTML_LINK_UP: #+HTML_MATHJAX: #+HTML_HEAD: #+HTML_HEAD_EXTRA: #+SUBTITLE: #+INFOJS_OPT: #+CREATOR: <a href="http://www.gnu.org/software/emacs/">Emacs</a> 23.3.1 (<a href="http://orgmode.org">Org</a> mode 8.3.1) #+LATEX_HEADER:
不同版本,可能产生的内容有所不同,根据个人需要对此进行修改,如果不需要,那么就不加这个步骤。这里给出一个实例:
#+TITLE:GTD管理方式 #+AUTHOR:QuietHeart #+DATE:[2015-11-03 二 12:16]
13.6.4.2 jekyll所需的 YAML Front Matter
之后再添加用于jekyll识别的 YAML Front Matter
信息,信息位于 #+BEGIN_HTML...#+END_HTML
之间,必须将信息包含在两对 ---
行内,这样生成的导出文件,最开始便是相应的 YAML Front Matter
信息了。具体参见jekyll相关文档。这里给出一个例子:
#+BEGIN_HTML --- layout: posts title: GTD管理方式 categories: [categories, note] comments: true --- #+END_HTML
13.6.4.3 包含兼容jekyll显示的css样式信息
再后添加导出html样式信息,该信息是html代码片段而非css文件的包含。由默认 C-c C-e hh
导出的单html文件样式修改而来,修改之时结合jekyll的CSS配置,将这个配置插入到导出的html中,便可使导出的文件样式更好地兼容整个jekyll环境中所定义的样式。
如前面所述,这里会将该代码片段存成文件 jekyll_orgmode_style.ext
,部署到 orgmode/_includes/
中,并被包含的待发布的文章中,如下:
#+INCLUDE: "../_includes/jekyll_orgmode_style.ext"
关于样式代码片段内容,根据个人的jekyll样式定义,以及orgmode导出的html样式各有不同,需要自行修改,这里给出一个例子:
#+BEGIN_HTML <style type="text/css"> .title { text-align: center; margin-bottom: .2em; } .subtitle { text-align: center; font-size: medium; font-weight: bold; margin-top:0; } .todo { font-family: monospace; color: red; } .done { font-family: monospace; color: green; } .priority { font-family: monospace; color: orange; } .tag { background-color: #eee; font-family: monospace; padding: 2px; font-size: 80%; font-weight: normal; } .timestamp { color: #bebebe; } .timestamp-kwd { color: #5f9ea0; } .org-right { margin-left: auto; margin-right: 0px; text-align: right; } .org-left { margin-left: 0px; margin-right: auto; text-align: left; } .org-center { margin-left: auto; margin-right: auto; text-align: center; } .underline { text-decoration: underline; } #postamble p, #preamble p { font-size: 90%; margin: .2em; } p.verse { margin-left: 3%; } pre { border: 1px solid #0c0; box-shadow: 1px 1px 1px #0e0; padding: 8pt; font-family: italic monospace; color: #C7EDCC; background-color: #111111; overflow: auto; margin: 1.2em; } pre.src { position: relative; overflow: visible; padding-top: 1.2em; } pre.src:before { display: none; position: absolute; background-color: white; top: -10px; right: 10px; padding: 3px; border: 1px solid black; } pre.src:hover:before { display: inline;} pre.src-sh:before { content: 'sh'; } pre.src-bash:before { content: 'sh'; } pre.src-emacs-lisp:before { content: 'Emacs Lisp'; } pre.src-R:before { content: 'R'; } pre.src-perl:before { content: 'Perl'; } pre.src-java:before { content: 'Java'; } pre.src-sql:before { content: 'SQL'; } table { border-collapse:collapse; } caption.t-above { caption-side: top; } caption.t-bottom { caption-side: bottom; } td, th { vertical-align:top; } th.org-right { text-align: center; } th.org-left { text-align: center; } th.org-center { text-align: center; } td.org-right { text-align: right; } td.org-left { text-align: left; } td.org-center { text-align: center; } dt { font-weight: bold; } .footpara { display: inline; } .footdef { margin-bottom: 1em; } .figure { padding: 1em; } .figure p { text-align: center; } .inlinetask { padding: 10px; border: 2px solid gray; margin: 10px; background: #ffffcc; } #org-div-home-and-up { text-align: right; font-size: 70%; white-space: nowrap; } .linenr { font-size: smaller } .code-highlighted { background-color: #ffff00; } .org-info-js_info-navigation { border-style: none; } #org-info-js_console-label { font-size: 10px; font-weight: bold; white-space: nowrap; } .org-info-js_search-highlight { background-color: #ffff00; color: #000000; font-weight: bold; } </style> #+END_HTML
13.6.4.4 添加文章内容目录索引
为保证用于jekyll的 YAML Front Matter
位于文件最前,前面的 :with-toc nil
配置可以确保orgmode不会自动将目录插入到文件开始,但是如果需要为文章加入目录信息,可以手动通过 #+TOC: headlines 3
在需要之处插入目录。实例如下:
#+TOC: headlines 3
13.6.4.5 需要添加信息的汇总
这里为清晰起见,做一个汇总,经过前面添加的过程,最终我们在所要发布的 *.org
文章里添加的信息举例如下:
#+TITLE:GTD管理方式 #+AUTHOR:QuietHeart #+DATE:[2015-11-03 二 12:16] #+BEGIN_HTML --- layout: posts title: GTD管理方式 categories: [categories, note] comments: true --- #+END_HTML #+INCLUDE: "../_includes/jekyll_orgmode_style.ext" #+TOC: headlines 3
注意,文章内容中的链接全部用相对于orgmode配置的发布源路径的相对链接。
13.6.5 发布命令
配置好信息之后,直接运行orgmode的发布命令即可将相应orgmode文件转换为html文件:
M-x org-publish-project RET org RET
或者输入 C-c C-e P x
注意,因为缓存的关系,如果没有被修改的文件,有时候可能不会被重新发布,可以只发布当前文件: C-c C-e P f
13.6.6 其他
参考资料: http://orgmode.org/worg/org-tutorials/org-jekyll.html
http://higrid.net/c-art-orgmode_jeklly_github.htm
http://orgmode.org/worg/org-tutorials/org-publish-html-tutorial.html
自行配置的时候,可能在执行的时候发布命令会报错,
Publishing file /home/miracle/mygitrepo/quietheart/mydoc/prepub/orgmode/_posts/2015-11-03-GTD_Manage_Method.org using `org-publish-org-to-html' find-buffer-visiting: Wrong type argument: stringp, (:base-directory "~/mygitrepo/quietheart/mydoc/prepub/orgmode/_posts/" :base-extension "org" :publishing-directory "~/mygitrepo/quietheart/mydoc/prepub/jekyll/_posts/" :recursive t :publishing-function org-publish-org-to-html ...)
这时候可以参考如下信息:
http://www.cnblogs.com/banjia/archive/2012/09/29/2708966.html
13.7 Misc collection
杂乱无章的收集的文档,暂时无法分类可能待整理?
13.7.1 —— Agenda view------
From:/home/miracle/mydata/orgmode/gtd/inbox.org
把当前buffer加入到agenda files中
C-c [
把当前buffer从agenda files中移除
C-c ]
13.7.2 意外发现
插入激活的时间戳后,在时间戳的辩解 <
或者 >
上用 S-<UP>/<Down>
会在非激活与激活上面切换。
13.8 参考资料:
14 WAIT/FORWARD FAQ [38/160]
([23%]
)
- State "WAIT/FORWARD" from
wait for all finishied.
14.1 MAYBE/FUTURE 如何隐藏"标题星星"?
- State "MAYBE/FUTURE" from "INBOX"
参考下面的资料:
啊,十分感谢,果然也可以隐藏星星,而且没有INDENT所带来的问题,虽然在某级别下行输入普通文本不会自动缩进,不过已经很好了。 另,开启这个变量的方式是在.EMACS文件中加入(SETQ ORG-HIDE-LEADING-STARS T) 【 在 UNKNOWNZERX 的大作中提到: 】 : 话说有个ORG-HIDE-LEADING-STARS变量
14.2 LATER 搜索子树相关
- State "LATER" from "INBOX"
C-c / d 建立一个包含所有deadline的TODO项目的sparse tree C-c / b 建立一个包含deadline在指定日期前的TODO项目的sparse tree C-c / a 建立一个包含deadline在指定日期后的TODO项目的sparse tree
14.4 DONE 各个级别列表标题中的内容段落如何缩进?
可以参考列表操作 相关命令。
14.5 LATER 如何显示图片
- State "LATER" from "INBOX"
14.6 DONE 如何删除标题或者项目以及子树下的内容?
14.7 DONE 如何链接文件和位置之类的?
参考 链接
14.8 DONE 如何行内转义引用?
参考格式部分的内容
14.9 DONE 如何设置启动时的自动折叠?
可以参考标题大纲配置
14.10 MAYBE/FUTURE 如何预览效果?
- State "MAYBE/FUTURE" from "INBOX"
14.11 DONE 标签的预定义
参考 标签配置
14.12 MAYBE/FUTURE 如何自动对齐ORGMODE文件的格式?
- State "MAYBE/FUTURE" from "INBOX"
14.13 DONE 如何在标题间跳转?
参考 标题大纲操作
14.14 DONE 如何缩进列表段落?
可以参考列表操作 相关命令。
14.15 LATER 貌似自动刷新功能还是没有完全实现
- State "LATER" from "NEXT"
在refile的时候会体现出来,还需要 C-x C-v
手动进行。
14.16 DONE 如何增加状态?
参考 TODO配置
14.17 DONE 如何定制状态的各种属性?
配置属性参考: TODO配置
14.18 DONE 如何设置和进行TODO的状态快捷切换?
快捷切换参考:TODO操作
14.19 DONE 如何按状态搜索TODO项目?
- State "DONE" from "NEXT"
输入 C-c a T
具体参见Agenda操作
14.20 LATER 如何实现代码原样引用?
对于 :#+BEGIN_SRC emacs-lisp :#+END_SRC
:#+BEGIN_EXAMPLE :#+END_EXAMPLE 这样的代码块,最好在相关的引用块中缩进一下。
14.21 DONE 配置折叠状态编辑的动作
参考:标题大纲配置
14.22 LATER 按照TAG进行搜索
- State "LATER" from "NEXT"
14.23 LATER 导出与发布
14.24 DONE 如何调整大纲缩进显示
需要设置org=startup-indented,或者indent选项,参考标题大纲配置
14.25 DONE 如何写行内引用的文字,类似markdown中的``。
等宽字体即可,参考:格式
14.26 DONE 如何确保硬换行
列表或其他行尾插入 \\
具体参考:硬换行
14.27 DONE 如何保存一个与文件位置无关的链接? C-c l
相关参数?
配置全局链接。参考:链接配置
14.28 DONE 如何简化列表标题等文档复杂度
简化结构。 参考:建议
14.29 CANCEL 如何定制插入的时间戳格式?
- State "CANCEL" from "LATER"
- State "LATER" from "NEXT"
14.30 LATER 如何在Refile的时候新建一个标题?org-refile-allow-creating-parent-nodes?
- State "LATER" from "NEXT"
14.31 DONE 恢复到默认的大纲内容模式还不太好用
使用 C-u C-u TAB
参考:大纲操作。
14.32 WAIT/FORWARD 是否可以org-agenda-files只使用一个文件,对应文件中列出所有agenda文件?
- State "WAIT/FORWARD" from "NEXT"
wait for move to appropriate place. - State "NEXT" from "INBOX"
可以参考如下设置:
(setq org-agenda-files (concat org-directory "gtd/agendafiles"))
对应的文件类似如下:
gtd/ gtd/next.org gtd/later.org gtd/maybe_future/ gtd/cancel/ gtd/done/ gtd/_active/ gtd/_review/ gtd/output/
14.33 WAIT/FORWARD 如何设置问题Open的时间?
- State "WAIT/FORWARD" from "NEXT"
没有完全解决,需要将有用信息转移的合适位置,没有解决的部分视情况切换状态。 - 直接方式
目前来说,如果直接插入一个TODO项目就暂时没有相应的时间戳,只能间接实现,如后面所述。
- 间接方式
设置如下参数:
(setq org-todo-keywords '((sequence "INBOX(i!)" "NEXT(n!)" "LATER(l!)" "WAIT/FORWARD(w@/!)" "MAYBE/FUTURE(m!)" "|" "CANCEL(c!)" "DONE(d!)" )) )
注意其中的'!'表示添加时间戳信息。这样插入一个普通项目之后,可以通过切换成INBOX状态达到自动插入时间戳的目的。这样设置之后,也会导致任何的状态切换会自动在相应的TODO项目标题下添加一个时间戳和状态切换信息。
14.34 WAIT/FORWARD 确认一下agenda的配置文件是否可以配置目录?
- State "WAIT/FORWARD" from "NEXT"
等待整理至合适位置
将org-agenda-files变量设置成单文件后,将采用这个文件内容列出的文件列表做为agenda的备选文件,目前实践看来可以将这个文件中某项文件列表写成目录路径。
14.35 LATER 考虑使用F1-n设置自己日常使用的自定义快捷方式,并且保证不要与其它冲突。
- State "LATER" from "NEXT"
14.36 LATER 标题如何添加序号?
- State "LATER" from "INBOX"
14.37 LATER 如何直接插入一个子标题?
- State "LATER" from "INBOX"
- State "INBOX" from
目前的方法是先用 C-Ret
插入一个同级标题,然后没有移动光标的情况下直接用 TAB
缩进到合适级别,或者用特定的标题操作缩进。
14.38 DONE 参考并整理结构编辑的相关操作:
- State "DONE" from "NEXT"
参考网址为:http://orgmode.org/manual/Structure-editing.html#Structure-editingo 整理至:大纲操作
14.40 MAYBE/FUTURE 注意,断行要用'\\',要么就空白一行。
- State "MAYBE/FUTURE" from "INBOX"
14.41 WAIT/FORWARD 如何解决输入下划线的时候,自动转换为下标?(想要不转换)
- State "WAIT/FORWARD" from "NEXT"
等待整理至合适位置 - State "NEXT" from "INBOX"
- State "INBOX" from [2015-10-08 四 14:48
对于上下标引导(_和^)字符,只解释后面'{}'括起来的文字为上下标,其余不解释。设置如下:
;;don't interpret"-" and "^" for display(interpret with "{}"). (setq org-use-sub-superscripts '{}) (setq org-export-with-sub-superscripts '{})
变量 org-use-sub-superscripts
用来控制是否显示之时解释 -
引导的下标,还是 ^
引导的上标;如果解释值为t,则始终对引导的内容解释成上下标;如果不解释,则值为nil;如果只在将文字用'{}'括起来的时候才解释,则设置为'{};
变量 org-export-with-sub-superscripts
类似,不过解释的时机为导出之时解释,而非显示。
8.0这两个变量互相为对方的别名,后来不是了。
对于导出html格式,如果设置 org-use-sub-superscripts
不管用,设置 org-export-with-sub-superscripts
才管用。
效果:
正常文字_正常文字 正常文字_{下标} 正常文字^正常文字 正常文字^{上标} normal_normal normal_{sub} normal^normal normal^{sup}
14.42 LATER orgmode refile如何创建新的文件和条目,如何定位设置之外的路径
- State "LATER" from "INBOX"
Time:
14.43 DONE orgmode如何只对一个指定的子标题生成html等导出文件?
- State "DONE" from "INBOX"
Time:导出操作
参考:14.44 DONE 如何在capture模板中将时间戳设置为非活跃时间戳,以减少Agenda的显示负担?
- State "DONE" from "INBOX"
在模板中使用 %u/%U
来替代 %t/%T
,例如:
;;Capture template (setq org-capture-templates '( ;; ("t" "Tasks" entry (file+headline "gtd/inbox.org" "Tasks") "* INBOX %?\nTime:%T\n") ("t" "Tasks" entry (file+headline "gtd/inbox.org" "Tasks") "* INBOX %?\nTime:%U\n") ("p" "Projects" entry (file+headline "gtd/inbox.org" "Projects") "* %?\nTime:%U\n") ("i" "Item notes" item (file+headline "gtd/inbox.org" "Items") "+ %?\n Time:%U\n From:%F\n") ("m" "Misc notes" entry (file+headline "gtd/inbox.org" "Notes") "* ------Time:%U------\nFrom:%F\n%?") ) )
14.45 DONE orgmode如何插入带有时间(而不仅仅是日期)的时间戳?
- State "DONE" from "NEXT"
- State "NEXT" from "DONE"
- State "DONE" from "NEXT"
- State "NEXT" from "INBOX"
Time:时间戳操作
使用 C-u C-c !
14.46 LATER 整理一下emacs_orgmodeusage的文档格式
- State "LATER" from "INBOX"
Time:
14.47 MAYBE/FUTURE 如何在活跃与非活跃时间戳之间进行切换?
- State "MAYBE/FUTURE" from "INBOX"
- State "INBOX" from
14.48 NEXT 如何打开链接的时候不新开一个窗口?
- State "NEXT" from "INBOX"
- State "INBOX" from
14.49 WAIT/FORWARD orgmode 的BEGIN_SRC总是导出错误,提示输入的语言参数,如何确定有哪些语言参数?
- State "WAIT/FORWARD" from "DONE"
need move to right place. - State "DONE" from "INBOX"
Time:orgmode相关文档网址 目前大致支持如下格式:
参考:Language | Identifier |
---|---|
Awk | awk |
C++ | C++ |
CSS | css |
ditaa | ditaa |
Emacs Calc | calc |
Fortran | fortran |
Haskell | haskell |
Javascript | js |
Ledger | ledger |
Lilypond | lilypond |
Mscgen | mscgen |
Octave | octave |
Oz | oz |
Plantuml | plantuml |
Python | python |
Ruby | ruby |
Scheme | scheme |
Sed | sed |
SQL | sql |
SQLite | sqlite |
Asymptote | asymptote |
C | C |
Clojure | clojure |
D | d |
Graphviz | dot |
Emacs Lisp | emacs-lisp |
gnuplot | gnuplot |
Java | java |
LaTeX | latex |
Lisp | lisp |
MATLAB | matlab |
Objective Caml | ocaml |
Org mode | org |
Perl | perl |
Processing.js | processing |
R | R |
Sass | sass |
GNU Screen | screen |
shell | sh |
例如,如果使用Emacs Lisp的格式那么这样:
#+BEGIN_SRC emacs-lisp xxx #+END_SRC
14.50 LATER 如果Agenda对应TODO状态发生变化,如何刷新Agenda view?
- State "LATER" from "INBOX"
Time:
在Agenda的TODO筛选界面(如 C-c a T
)上按照提示操作 (如 r
)。
14.51 DONE orgmode有没有离线帮助手册在emacs中直接使用?
- State "DONE" from "INBOX"
Time:
输入 M-x info
, 之后能够看到orgmode相关的文档。
14.52 LATER 如何自由切换orgmode的活跃和非活跃时间戳?
- State "LATER" from "INBOX"
Time:
14.53 LATER 如何在orgmode中调整已有列表条目的缩进级别?
- State "LATER" from "INBOX"
Time:
14.54 MAYBE/FUTURE Orgmode表格格式如何自动添加分割横线?为何导出时没有列分割?
- State "MAYBE/FUTURE" from "INBOX"
Time:
14.55 MAYBE/FUTURE Agenda view不折行?
- State "MAYBE/FUTURE" from "INBOX"
Time:
例如 C-c a T
14.56 MAYBE/FUTURE 如何格式化块?如删除块?
- State "MAYBE/FUTURE" from "INBOX"
14.57 LATER 如何自动触发状态变化?
- State "LATER" from "INBOX"
例如自动触发状态切换,自动触发refile之类的?
14.58 DONE orgmode与mobile org整合
- State "DONE" from "WAIT/FORWARD"
目前感觉不是非常好用,mobile org中Capture功能相对实用一些,可以将片段捕捉下来,同步到电脑上。 具体参见: orgmode与mobile org整合
14.59 MAYBE/FUTURE Orgmode refile如何到特定的标题上而非仅仅追加或者插入?
- State "MAYBE/FUTURE" from "LATER"
- State "LATER" from "INBOX"
Time:
另外,如何新建文件?新建标题之类的?
关于refile之时不将被refile的标题做为子标题,参见如下回答:
If you specify org-refile-use-outline-path to be 'file it is possible to just use the path of the file as the refile target and the node will be entered at the top-level. (setq org-refile-use-outline-path 'file) (setq org-refile-targets '((org-agenda-files :level . 1))) You can see the full documentation of org-refile-use-outline-path with C-h v org-refile-use-outline-path RET.
网址:http://stackoverflow.com/questions/21334817/emacs-org-mode-refile-to-main-tree-and-not-as-a-subtree
14.60 CANCEL orgmode attachment的内容需要看一下
- State "CANCEL" from "WAIT/FORWARD"
- State "WAIT/FORWARD" from "CANCEL"
- State "CANCEL" from "CANCEL"
- State "CANCEL" from "CANCEL"
- State "CANCEL" from "NEXT"
- State "NEXT" from "INBOX"
Time:
attachment功能感觉不是很适用于当前自己的内容管理体系,故取消。
- 设置当前标签的附件目录
- 输入
C-c C-a s
, 然后输入附件的目录,之后会增加一个ATTACH_DIR
属性,指向你设置的目录路径. - 附件操作
- 输入
C-c C-a
, 然后有相应的子命令,进行操作,具体参见帮助.- 添加附件
- 输入
a
, 会视org-attach-method
的值, 将相应的附件复制/拷贝/链接到ATTACH_DIR
对应目录中,并追加一项Attachments
属性.
14.61 NEXT 如何在orgmode中打开链接的时候不会自动新开窗口而是使用已有窗口?
- State "NEXT" from "WAIT/FORWARD"
- State "WAIT/FORWARD" from "LATER"
等待整理至合适的位置。 - State "LATER" from "INBOX"
Time:
配置帮助等新开弹出窗口为上下方式分割后,这个问题消失了,跟踪链接会自动使用当前窗口而非新开了。配置如下:
;; perfer split 'pop' window vertically(whole->up+lower). (setq split-height-threshold 0) (setq split-width-threshold nil)
后来有出现了,跟踪链接的时候都会新开一个窗口。
14.62 LATER orgmode 如何修改时间戳?直接编辑?
- State "LATER" from "INBOX"
Capture Time:
14.63 MAYBE/FUTURE agenda如何不扫描有些状态,如done、cancel、maybe/future
- State "MAYBE/FUTURE" from "INBOX"
Capture Time:
14.64 MAYBE/FUTURE orgmode的块是否可以嵌套?比如quote块内是否可以quote?
- State "MAYBE/FUTURE" from "INBOX"
Capture Time:
14.65 LATER orgmode如何在导出子树的时候自动以标题命名?
- State "LATER" from "INBOX"
Time:
14.66 LATER orgmode如何指定导出的路径和文件名称?
- State "LATER" from "INBOX"
Time:
14.67 LATER orgmode光标如何定位到下一个链接?
- State "LATER" from "INBOX"
Time:
14.68 LATER orgmode如何实现任务自动触发定时切换以及refile
- State "LATER" from "NEXT"
- State "NEXT" from "INBOX"
Time:
14.69 WAIT/FORWARD 列表与换行
- State "WAIT/FORWARD" from "INBOX"
等待移动至合适的位置
想到一个方法解决列表内多段落的问题。
换行 :: 杜绝硬换行的习惯
硬换行用“\\”,但是输入不便且有些情况不支持(如MobileOrg),所以想要换行,就新起一段落,那么新行前多一个空行。
这是一个新行,也是新段落。
一个段落,实际就是一行。逻辑关系有标点表示。
列表内换行 :: 用描述列表
有时为美观,列表第一换行若用一空行则显得与列表项标题相距有点远,并且第一行内容一般也很少,一般都是总体描述性文字。所以,建议第一行是简短描述时用描述列表,第一行在描述的“::”后,之后的段落也用空行。若直接第一行就很长不是描述,那么不用描述列表,并且宁可与列表项标题多空一行,也不用断行符。
14.70 WAIT/FORWARD orgmode建议
- State "WAIT/FORWARD" from "INBOX"
等待移动至合适的位置
建议标题以2级开始(题目视作一级)
14.71 LATER Orgmode中checkbox和header也可以结合使用
- State "LATER" from "INBOX"
Capture Time:
例子如下:
TODO list [0%] + [ ] Read previous resource manage files. + [ ] Read current header file. + [ ] Read current document. + [ ] Design work.
14.72 LATER 确认一下orgmode中的引用块相关细节,例如begin example和begin quote之间的区别
- State "LATER" from "INBOX"
Capture Time:
14.73 CANCEL 考虑orgmode中,是否应该每一个状态添加!,将处理信息和状态信息集成。
- State "CANCEL" from "NEXT"
当前没有必要 - State "NEXT" from "INBOX"
Capture Time:
14.74 LATER orgmode 如何递归折叠光标所在节点?
- State "LATER" from "INBOX"
Capture Time:
14.75 WAIT/FORWARD emacs markdown 导出
- State "WAIT/FORWARD" from "INBOX"
等待转移至合适位置
Capture Time:
可以参考一下这个网址: http://stackoverflow.com/questions/22988092/emacs-org-mode-export-markdown
使用官方提供的 C-c C-e
后没有导出markdown的m选项。
I have some weird behavior, I don't actually know if it's a bug or something else. When I do C-c C-e the option to convert to markdown doesn't appear. Nonetheless I can type the option M-x org-md-export-as-markdown and after I do that, the option export to markdown appears in the C-c C-e menu.
Any Ideas?
解决方案是
If you are using Org-mode version 8.0 or later (check with M-x org-version), the export framework is broken up into several libraries that are not necessarily loaded by default.
Something like this in your Emacs configuration can load the Markdown exporter automatically with Org-mode:
(eval-after-load "org" '(require 'ox-md nil t))
shareimprove this answer
14.76 DONE orgmode与jekyll的结合
- State "DONE" from "WAIT/FORWARD"
- State "WAIT/FORWARD" from "NEXT"
待转移至合适位置 - State "NEXT" from "INBOX"
- State "INBOX" from
大致思路是:建立一个与jekyll目录结构类似的orgmode路径,org文件存于其中,发布导出路径是jekyll。 具体参见:orgmode与jekyll的结合
14.77 LATER orgmode如何输入成块的原样文字而不解释、缩进之类的?
- State "LATER" from "INBOX"
Capture Time:
14.78 LATER 为什么orgmode定义好的refile如果是单个文件,那么这个文件内容会自动变化?
- State "LATER" from "INBOX"
Capture Time:
14.79 LATER Jekyll与orgmode结合的问题
- State "LATER" from "INBOX"
Capture Time:
添加postamble
包含文件的“绝对”相对路径如何实现?
使用orgmode结合jekyll的策略和功能的分开。
策略在jekyll的readme里,功能在orgmode文档中。
14.80 NEXT 如何为orgmode导出添加作者信息?
- State "NEXT" from "INBOX"
Capture Time:
14.81 LATER emacs如何导出的时候不缓存上次修改差异而直接强制导出?
- State "LATER" from "INBOX"
Capture Time:
14.82 DONE 是否应该为取消的项目在切换到取消之前添加备注,类似wait/forward,指明为什么取消?
- State "DONE" from "INBOX"
Capture Time:
14.83 MAYBE/FUTURE orgmode多文件文档
- State "MAYBE/FUTURE" from "INBOX"
Capture Time:
各个分片文档组成整体文档
14.84 LATER orgmode中导出时的include关键字所基于的路径能否配置?
- State "LATER" from "INBOX"
Capture Time:
14.85 LATER 如何在orgmode中时间戳中选择特定的时间插入?需要知道相关的指令和按键,而非手动修改。
- State "LATER" from "INBOX"
Capture Time:
14.86 NEXT orgmode导出utf8问题
- State "NEXT" from "LATER"
- State "LATER" from "INBOX"
Capture Time:
14.87 CANCEL orgmode sub task and summary.
- State "CANCEL" from "INBOX"
no need , it is described in TODO operation.
Capture Time:
14.88 DONE 切换和设置优先级
- State "DONE" from "WAIT/FORWARD"
- State "WAIT/FORWARD" from "LATER"
- State "LATER" from "NEXT"
- State "NEXT" from "INBOX"
- State "INBOX" from
参考: TODO项目 相关配置和操作。
大致如下:
- 配置
;;set priority (setq org-highest-priority ?A) (setq org-lowest-priority ?D) (setq org-default-priority ?A) (setq org-priority-faces '( (?A . org-warning) (?B . (:background "DodgerBlue" :foreground "black" :weight bold)) (?C . (:foreground "SkyBlue" :weight bold)) (?D . (:foreground "DodgerBlue" :weight bold)) ) )
- 操作
切换优先级输入 S-UP/S-DOWN
14.89 WAIT/FORWARD archive
- State "WAIT/FORWARD" from "INBOX"
wait for move. - State "INBOX" from
参考:Archive的配置
具体内容可以参见: C-h v org-archive-default-command
, C-h v org-archive-location
, C-h v org-archive-save-context-info
- 采用默认的方式归档
输入
C-c C-x C-a
这会默认将当前标题归档为同名,但是后缀为
.org_archieve
的归档文件(无论状态是不是done)。这个命令具体会怎么执行,会根据org-archive-default=command
的设置而定, 默认值为:org-archive-subtree
- (no term)
归档命令
C-c C-x C-s
或者C-c $
- 执行
org-archive-subtree
, 将所选内容归档至指定文件指定标题,具体可通过org-archive-location
指定。 C-u C-c C-x C-s
- 类似前面,但是归档之前会检测被归档的标题子标题是否有open的todo项目,如果没有就移动,否则提示。如果光标不再标题,则对所有顶级标题开始依次遍历并检测归档。
C-u C-u C-c C-x C-s
- 类似前面,但是检测之时,检测的是过期的时间戳,而非todo项目。
以上命令中,第一个经常用到,后面两个不怎么用,如果保存被归档内容的更多信息,需要配置
org-archive-save-context-info
, 归档之后,标题中的链接和引用仍然有效。
14.90 NEXT orgmode中为何example块中的标题还遵从orgmode的格式?
- State "NEXT" from "INBOX"
Capture Time:
14.91 NEXT orgmode导出为utf8报告错误
- State "NEXT" from "INBOX"
Capture Time:
错误信息如下
org-export-numbered-headline-p: Wrong type argument: number-or-marker-p, nil
目前看来是在一个标题下添加了对其他内容的引用(通过id)之后出现这个问题,例如:
** DONE wk1548 CLOSED: [2015-12-04 五 10:09] :PROPERTIES: :ID: b287eddd-9629-49d9-9949-6042f71b8047 :END: - State "DONE" from "NEXT" [2015-12-04 五 10:09] 参考:[[id:3f6910c4-e8ea-4cf7-8dad-c13ab7127074][周报回顾]]
14.92 LATER orgmode在引用块中缩进的标题问题
14.93 MAYBE/FUTURE orgmode导出markdown有太多的引用标记,如何尽可能原样展示而非很多的'style'类似的东西?
- State "MAYBE/FUTURE" from "LATER"
- State "LATER" from "INBOX"
Capture Time:
14.94 LATER orgmode 番茄钟、时间记录
- State "LATER" from "INBOX"
Capture Time:
14.95 MAYBE/FUTURE orgmode为什么refile 目标会跟踪软链接到其他目录中?
- State "MAYBE/FUTURE" from "INBOX"
Capture Time:
14.96 LATER 属性
- State "LATER" from
14.96.1 操作
- 在当前所在标题插入属性
- 输入
C-c C-x p
, 输入之后,按照提示输入属性名和属性值.
* 测试属性 :PROPERTIES: :test: name :what: no :END:
- 移除一个属性
- 在相应的属性区域输入
C-c C-c d
, 输入之后,按照提示输入待删除的属性名.
14.97 WAIT/FORWARD ormode项目管理
- State "WAIT/FORWARD" from "INBOX"
等待整理至合适位置
Capture Time:
子项目的管理:如果子项目中有未完成的项目,理论上说,这些子项中的最高优先级别状态,就是父项目的状态。项目优先级为: NEXT>LATER>WAIT>INBOX>DONE=CANCEL
14.98 DONE orgmode考虑是否应该将状态文件以'_' 做为前缀,便于angenda中一目了然不和其他文件混淆?
- State "DONE" from "INBOX"
Capture Time:
已经将状态文件冠以 _
前缀,便于在Agenda View中集中浏览。
14.99 NEXT orgmode应用聚合有哪些场景? [2/7]
- State "NEXT" from "LATER"
- State "LATER" from "INBOX"
Capture Time:
[X]
与MobileOrg的结合- 参见 orgmode与mobile org整合
[ ]
(no term)- 基本语法
[ ]
(no term)- 如何安装?
[ ]
(no term)- 如何管理文档?
[X]
如何与jekyll结合- 参见 orgmode与jekyll的结合
[ ]
如何管理gtd?- 参见
[ ]
(no term)- 学习之路?基本语法->capture+refile->export+publish 开始就写文档,并且记录
FAQ
等等.
14.100 LATER orgmode记时功能可以提高集中力
- State "LATER" from "INBOX"
Capture Time:
14.101 NEXT Orgmode如何官方发问?
- State "NEXT" from "INBOX"
Capture Time:
14.101.1 订阅邮件列表
首先订阅相关邮件列表,定位参见:Emacs-orgmode – General discussions about Org-mode.
14.102 MAYBE/FUTURE Ascii art
- State "MAYBE/FUTURE" from "INBOX"
Capture Time:
14.103 MAYBE/FUTURE artist mode in emacs
14.104 MAYBE/FUTURE Emacs中的plantuml配置如何与ascii art格式图形结合?
- State "MAYBE/FUTURE" from "INBOX"
Capture Time:
14.105 NEXT emacs 中如何配置dot?
- State "NEXT" from
14.106 LATER orgmode画图
- State "LATER" from "INBOX"
Capture Time:
14.107 LATER pdflatex for orgmode
- State "LATER" from "INBOX"
Capture Time:
sudo apt-get install latex-beamer
14.108 NEXT mobileorg的加密功能,可以防止隐私的泄漏;orgmode的加密功能既能管理工作又能防止工作隐私泄漏。
- State "NEXT" from "INBOX"
Capture Time:
14.109 WAIT/FORWARD orgmode中图片链接导出之时如何不是文字链接而直接图片?
- State "WAIT/FORWARD" from "INBOX"
有待整理
Capture Time:
根据文档, 当图片链接有描述文字之时,会在html导出之时显示该图片的描述性文字链接。如果想要直接显示图片可以:
- 添加链接的时候,不给出链接描述文字;
- 当图片链接的描述为图片的路径之时(可以为另外一个图片做为其缩略图),导出的时候显示的便不是图片的链接文字,而直接是图片。
如下:
[[/home/miracle/mydata/orgmode/data/image/2010-04-02-editor_study_line.jpg]] [[/home/miracle/mydata/orgmode/data/image/2010-04-02-editor_study_line.jpg][/home/miracle/mydata/orgmode/data/image/2010-04-02-editor_study_line.jpg]]
问题:实践发现,应该是没有描述的比较实用,描述为图片的有时候似乎不好用?
14.110 LATER orgmode表格导出之后,文本或者html没有竖线只有横线
- State "LATER" from "INBOX"
Capture Time:
14.111 NEXT orgmode导出文章pdf问题
- State "NEXT" from "INBOX"
Capture Time:
14.112 LATER orgmode中搜索相关命令的整理
- State "LATER" from "INBOX"
Capture Time:
14.113 LATER orgmode导出文本格式的内容如何简洁?
- State "LATER" from "INBOX"
Capture Time:
14.114 NEXT orgmode为什额数据丢失?怎样自动备份?
- State "NEXT" from "INBOX"
Capture Time:
考虑refile自动保存,以及保存后自动提交git 考虑自动保存 不用每次保存都自动提交git,可以考虑每保存5次或者几次就自动提交一次。 可以考虑手动提交的命令扩展 可以考虑本地同步工具,等有了私有云盘之后可以考虑加入该功能。 私有云之后,公有云做为非敏感数据的冗余备份
14.115 INBOX orgmode如何跳至标题尾部?
Capture Time:
14.116 INBOX orgmode如何成块缩进?
Capture Time:
14.117 NEXT orgmode中如何用等宽字体表示'=', 以及其它类似的转义?
- State "NEXT" from "INBOX"
Capture Time:
14.118 WAIT/FORWARD Agenda 显示指定天数之前的内容
- State "WAIT/FORWARD" from
wait 等待整理
输入: C-u 21 C-c C-a a
这样会显示21天前的内容。
输入: C-c C-a a
后,想要切换月显示,输入 v m
即可。
14.119 LATER orgmode设置不要隐藏标题星星了。
- State "LATER" from "INBOX"
Capture Time:
14.120 NEXT 总是出现标题id重复的情况?如何调试和解决?
- State "NEXT" from
14.121 NEXT 不小心编辑之后,如何撤销?关键不是步骤,而是如何寻找哪个时间有哪个修改,进而退到相应时间?
- State "NEXT" from
14.122 MAYBE/FUTURE orgmode如何导入 excel表格
- State "MAYBE/FUTURE" from "INBOX"
Capture Time:
14.123 LATER Agenda View怎样显示任意时间区间的内容?
- State "LATER" from "INBOX"
Capture Time:
14.124 LATER Agenda怎样在标题变化的时候,显示父标题?
- State "LATER" from "INBOX"
Capture Time:
14.125 MAYBE/FUTURE orgmode如何包含子文件?
- State "MAYBE/FUTURE" from "INBOX"
Capture Time:
14.126 LATER 考虑用orgmode直接生成网站,不借助jekyll.
- State "LATER" from "INBOX"
Capture Time:
14.127 MAYBE/FUTURE orgmode附件对于导出有什么作用?
- State "MAYBE/FUTURE" from "INBOX"
Capture Time:
14.128 LATER 如何导出pdf的时候,将svg图片也能正确显示?
- State "LATER" from "INBOX"
Capture Time:
by simply using the command \includesvg{example} % Note that the file ending is omitted! if the name of your image is “example.svg”, and adding \usepackage{svg} to your preamble. Note that this only works if “example.svg” is in the same directory as your LaTeX source file (I will come back to how to include images in other locations). To compile the document you have to allow calling of external functions during compilation, which you do with latex or pdflatex by adding the flag “–shell-escape”: pdflatex --shell-escape main.tex
参考:http://comp-phys.net/2014/03/22/including-vector-graphics-in-latex-using-includesvg/
14.129 INBOX orgmode导出如何自动计算代码块而非手动交互确认 y
?
Capture Time:
14.130 INBOX orgmode pdf导出后无法正常显示plantuml生成的svg图片s
Capture Time:
14.131 INBOX 考虑如何按照优先级对org文件中的内容进行自动或者按需排序
Capture Time:
14.132 NEXT orgmode导出pdf如何自动添加字体支持?
- State "NEXT" from
14.133 WAIT/FORWARD orgmode pdf 导出支持
- State "WAIT/FORWARD" from "INBOX"
等待整理
Capture Time:
安装 texlive
$sudo apt-get install texlive texlive-xetex texlive-latex-extra $sudo apt-get install latex-cjk-all
orgmode设置
;; org-mode < 8.0 ;;(setq org-latex-to-pdf-process '("xelatex -interaction nonstopmode %f" ;;"xelatex -interaction nonstopmode %f")) ;; org-mode 8.0 (setq org-latex-pdf-process '("xelatex -interaction nonstopmode %f" "xelatex -interaction nonstopmode %f"))
确认系统中文字体名
使用
fc-list
确认要使用的中文字体:$fc-list :lang=zh |sort ... WenQuanYi Bitmap Song:style=Bold WenQuanYi Bitmap Song:style=Regular 文泉驿等宽微米黑,文泉驛等寬微米黑,WenQuanYi Micro Hei Mono:style=Regular 文泉驿等宽正黑,文泉驛等寬正黑,WenQuanYi Zen Hei Mono:style=Regular 文泉驿点阵正黑,文泉驛點陣正黑,WenQuanYi Zen Hei Sharp:style=Regular 文泉驿微米黑,文泉驛微米黑,WenQuanYi Micro Hei:style=Regular 文泉驿正黑,文泉驛正黑,WenQuanYi Zen Hei:style=Regular 永中粗黑,Yozo CuHei,Evermore CuHei:style=Regular 永中仿宋,Yozo FangSong,Evermore FangSong:style=Regular 永中黑体,Yozo Hei,Evermore Hei:style=Regular 永中楷体,Yozo Kai,Evermore Kai:style=Regular 永中宋体,Yozo Song,Evermore Song:style=Regular ...
如果没有中文字体,那么参考如下方式自行安装
将C:/windows/fonts下你喜欢的字体拷贝到/usr/share/fonts/windows目录下(需首先创建windows目录) 然后将对应字体拷贝到该目录下(需使用管理员权限sudo执行,我拷贝的是常用的六种中文字体simsun.ttc 和sim开头的.ttf) 加载字库文件时需要有读权限 $sudo chmod 644 /usr/share/fonts/windows/* 生成ubuntu下的字库索引 cd /usr/share/fonts/windows sudo mkfontscale sudo mkfontdir sudo fc-cache -fv
orgmode文件头
假设使用
永中宋体
, 那么可直接用永中宋体
或者Yozo Song
做为\setCJKmainfont{}
中的参数。#+LATEX_HEADER: \usepackage{xeCJK} #+LATEX_HEADER: \setCJKmainfont{永中宋体}
导出
C-c C-e l p
参考: http://blog.csdn.net/aka_xingwenpeng/article/details/16944919#comments
14.134 WAIT/FORWARD 如何在emacs orgmode导出的时候,自动提取并创建引用的目录和文件
- State "WAIT/FORWARD" from "NEXT"
如何处理导出文件输出的问题? - State "NEXT" from "INBOX"
Capture Time:
使用 org-export-before-processing-hook
添加在导出之前创建相关目录的函数。
使用 org-export-filter-link-functions
添加导出后为生成文件的 link
对象过滤器。
下面是一个例子,尚未实现导出文件拷贝到特定目录。
;;;;; Custom export dir filter before processing ;; 1. First input the output dir, default is current path(got name?). ;; 2. Then create a directory with the path of output dir. ;; Note: ;; We can't change the outfile directly, but this directory canbe used to store =data= of the links. ;; This filter is used only for single file export, if you publish many files, it's best disable it in case answer for each file. ;;;;; (defun my-before-processing-filter-filename-html (backend) (when (org-export-derived-backend-p backend 'html) (setq export-out-dir nil);;not local but global. (while (not export-out-dir) ;;1. First input the output dir, default is current path(got name?). (setq export-out-dir (read-file-name "Enter file/directory name:")) ;;2. Then create a directory with the path of output dir (if (file-accessible-directory-p export-out-dir) (if (yes-or-no-p "Directory is already exists, do you really continue?") (message "Warning: directory %s is already exists" export-out-dir) (progn (setq export-out-dir nil) (message "Directory not created"))) (progn (make-directory export-out-dir t) (message "Directory %s created" export-out-dir)))))) (add-to-list 'org-export-before-processing-hook 'my-before-processing-filter-filename-html) ;;;;; Custom link filter function for relative path with output path ;;When export 'filename.org' , do the followings for each link: ;;1. filter the path from link ;; For example: ;; 1) link is <img src="file:///home/miracle/mydata/orgmode/data/1092c6d9-4773-4beb-93e9-a58525fa06cb/example_differencefocused_between_twosdk.png" ;; alt="example_differencefocused_between_twosdk.png" /> ;; 2) or link is <a href="file:///home/miracle/mydata/orgmode/data/ca54a050-beb9-4f97-96f3-41d52a0aa28e/CallsGraph-writeData.png">CallsGraph-writeData.png</a> ;; 3) or link is <object type="image/svg+xml" data="./data/1debdbc5-0d30-4cd2-8e15-6abbb2280e46/youtubestart-nettv1.svg" > ;; Then: ;; 1) get the origin path: /home/miracle/mydata/orgmode/data/ca54a050-beb9-4f97-96f3-41d52a0aa28e/CallsGraph-writeData.png">CallsGraph-writeData.png ;; 2) and the new path relative to export path: "./data/ca54a050-beb9-4f97-96f3-41d52a0aa28e/CallsGraph-writeData.png">CallsGraph-writeData.png" ;; 3) the export path here is what you input before export process hook. ;; ;;2. create new path according to its abolute path. ;;3. Then copy origin file to new path ;;4. Then convert the link to new link with new path relative to export dir. ;;5. Note: you have to copy or save the exported "*.html" file to export dir manually. ;;;;; (defun my-link-filter-relative-html (link backend info) (when (org-export-derived-backend-p backend 'html) ;;1. filter path from link(files only in data directory, support:<a href=...>, <img src=..>, <object ... data=...>) (setq link-filter-regex "<\\(img\\|a\\|object\s*\\)\\(.*?src\\|.*?href\\|.*?data\\)\\(\s*=\s*\"\\)\\(.*?:?/*/.*/data/.*?/?.*?\\)\\(\"\s*.*?>.*\\)") (setq origin-src (funcall (lambda (my-regex my-str match-num) (string-match my-regex my-str) (setq my-matched (match-string match-num my-str))) link-filter-regex link 4)) (setq origin-path (replace-regexp-in-string "\\(.*?:?/*\\)\\(/.*/data/.*?/?.*\\)" "\\2" origin-src)) (message "origin link is: %s" link) (message "origin-src value is: %s" origin-src) (message "origin-path value is: %s" origin-path) (if (not (file-exists-p origin-path)) (message link) (progn (setq origin-data-dir (replace-regexp-in-string "\\(.*/data/\\).*?/?.*" "\\1" origin-path)) (setq new-path (replace-regexp-in-string ".*\\(/data/.*?/?.*\\)" (concat export-out-dir "\\1") origin-path)) (setq new-path-relative (replace-regexp-in-string ".*/\\(data/.*?/?.*\\)" "\./\\1" new-path)) (message "origin-data-dir value is: %s" origin-data-dir) (message "export-out-dir value is: %s" export-out-dir) (message "new-path value is: %s" new-path) (message "new-path-relative value is: %s" new-path-relative) ;;2. Then create relating path (setq new-data-dir (concat export-out-dir "/data/")) (make-directory new-data-dir t) (message "new-data-dir value is: %s" new-data-dir) (if (not (file-accessible-directory-p (file-name-directory new-path))) (make-directory (file-name-directory new-path) t)) ;;3. Then copy origin file to new path (copy-file origin-path new-path t) ;;4. Then convert the link to new link (setq new-link (replace-regexp-in-string origin-src new-path-relative link)) (message "new link value is:") (message new-link))))) ;;(pop org-export-filter-link-functions) (add-to-list 'org-export-filter-link-functions 'my-link-filter-relative-html t) ;;(pop org-export-filter-link-functions)
14.135 LATER elisp如何动态设置 org-publish-project-alist
- State "LATER" from "MAYBE/FUTURE"
- State "MAYBE/FUTURE" from "INBOX"
Capture Time:
目前这个变量中的路径,只能用字符串常量,无法通过 (concat ...)
等方式动态拼接。
14.136 NEXT 导出时,过滤掉时间戳或者TODO关键字的方法。
- State "NEXT" from "INBOX"
Capture Time:
14.137 LATER 为什么无法导出UTF时,有链接的会报错?
- State "LATER" from
org-babel-exp process sh at line 278... org-export-numbered-headline-p: Wrong type argument: number-or-marker-p, nil
14.138 LATER org-link-id相关的实现机理(缓存?只适用本地机器?)
- State "LATER" from
14.139 WAIT/FORWARD 意外收获
- State "WAIT/FORWARD" from
wait for arrange.
新建一个没有编辑的主题后(只有 *
),可以通过在其上按 TAB
来调节其级别。
14.140 LATER org-pomodoro
- State "LATER" from
orgmode下番茄工作法。 参考:https://github.com/lolownia/org-pomodoro
14.141 LATER 如何为所有标题添加默认标签
- State "LATER" from
14.142 LATER 如何搜索没有标签的内容
- State "LATER" from "NEXT"
- State "NEXT" from
14.143 LATER orgmode怎么把类excel表格在复制粘帖的时候自动转换为orgmode表格?
- State "LATER" from "INBOX"
Capture Time:
14.144 MAYBE/FUTURE orgmode如何搜索反引用的问题
- State "MAYBE/FUTURE" from "INBOX"
Capture Time:
14.145 LATER 考虑设置orgmode子标题状态变化之后,父标题根据优先级自动调整
- State "LATER" from "INBOX"
Capture Time:
14.146 MAYBE/FUTURE orgmode emacs如何收藏邮件,这个需要考虑一下
- State "MAYBE/FUTURE" from "LATER"
- State "LATER" from "INBOX"
Capture Time:
14.147 LATER 考虑一下orgmode导出配置的路径程序,是否适合修改目录结构的情形
- State "LATER" from "INBOX"
Capture Time:
14.148 LATER 如何在emacs orgmode中方便地创建一个文章(博客)
- State "LATER" from "INBOX"
Capture Time:
14.149 LATER orgmode中link id缓存与publish相关的缓存
- State "LATER" from "INBOX"
Capture Time:
14.150 WAIT/FORWARD emacs orgmode导出文档的created time有些问题
- State "WAIT/FORWARD" from "INBOX"
wait for more arrange.
Capture Time:
导出的时候,检测标题是否有 EXPORT_DATE
属性,这个属性是继承的?根据这个属性来设置CREAE time.
;;;;;;Initialize create time. (cond (subtreep (if (not (org-entry-get (save-excursion (ignore-errors (org-back-to-heading) (point))) "EXPORT_DATE" t)) (org-entry-put (save-excursion (ignore-errors (org-back-to-heading) (point))) "EXPORT_DATE" (format-time-string "%Y-%m-%d %U %H:%M"))) ) )
另外,上次更新的时间也可类似,追加属性来实现。
;;;;;;Update last export time. ;;TODO how to update file date not entry? (cond (subtreep (org-entry-put (save-excursion (ignore-errors (org-back-to-heading) (point))) "_LAST_EXPORT_DATE" (format-time-string "%Y-%m-%d %U %H:%M")) ) )
具体需要参见自己的 emacs
配置文档, org-export.org, 将来在进一步整理。
14.151 MAYBE/FUTURE 意外的发现,org文件可以做为.csv表格文件直接导入,只不过分隔符为 '*' 而非','
- State "MAYBE/FUTURE" from "INBOX"
Capture Time:
.csv是表格文件的文本表达方式,虽然未标准化,但是有rfc,也大致上一致,便于在各个表格软件中数据转换传输。
14.152 MAYBE/FUTURE orgmode如何为标题创建时间?(便于导出成为create time)
- State "MAYBE/FUTURE" from "INBOX"
Capture Time:
为相应标题使用 EXPORT_DATE
属性。例如
:PROPERTIES: :EXPORT_DATE: <2017-02-14 二 15:54> :END:
14.153 WAIT/FORWARD orgmode设置导出文件名称
- State "WAIT/FORWARD" from "LATER"
wait for more arrange. - State "LATER" from
With a non-nil optional argument SUBTREEP, try to determine output file's name by looking for "EXPORT_FILE_NAME" property of subtree at point.
(org-entry-put (save-excursion (ignore-errors (org-back-to-heading) (point))) "EXPORT_FILE_NAME" (concat export-out-dir "/index"))
14.154 LATER orgmode为什么 "C" 无法用 == 来修饰?
- State "LATER" from "INBOX"
Capture Time:
可能需要研究: org-emphasis-regexp-components
14.155 NEXT refile的时候能否根据状态自动指定目标文件?
- State "NEXT" from "INBOX"
Capture Time:
14.156 LATER 如何让 example block 中的 '*' 不会被解析为主题。
- State "LATER" from
14.157 LATER 额外的todo切换操作
With C-u prefix arg, use completion to determine the new state. With numeric prefix arg, switch to that state. With a double C-u prefix, switch to the next set of TODO keywords (nextset). With a triple C-u prefix, circumvent any state blocking. With a numeric prefix arg of 0, inhibit note taking for the change. With a numeric prefix arg of -1, cancel repeater to allow marking as DONE.