Org-mode, 用文本文件管理日常(八)
本文翻译自 /uploads/allimg/20230503/ea5jz2sx5nq.html ,原文作者为Bernt Hansen 。由于原文较长,因此会分多篇文章来发布。转载请标记出处。
Org-mode, 用文本文件管理日常(七)
Org-mode, 用文本文件管理日常(六)
Org-mode, 用文本文件管理日常(五)
Org-mode, 用文本文件管理日常(四)
Org-mode, 用文本文件管理日常(三)
Org-mode, 用文本文件管理日常(二)
Org-mode, 用文本文件管理日常(一)
本节主要介绍作者如何处理备忘以及来电事件流程,通过这些流程可以加深capture模板了解。
org-capture创建note,org-refile 重定向note,记录note快速高效。
1 处理备忘
备忘通常用来记录获取到的知识精华。它们很像任务,但是不需要完成(除了需要学习或者记忆那类). 不幸的是,生活中会记录大量备忘,那么就有太多的知识精华要记,想想那么多的需要记下来,我的脑袋就爆炸了。
org-mode 来解救这种尴尬。
通常我在Gnus中读取git邮件列表时,当我发现有些非常棒的功能或者事情我需要记住时,我就会 使用备忘。当需要创建备忘时,我会用备忘捕获模板=C-c c n= 来创建备忘,输入备忘大纲, 然后 C-c C-c 保存下来。剩下来要做的就是重定向(将来)到合适的项目文件中。
我有个agenda视图专门用来查找备忘。一般,我会将备忘,重定向到相关的项目或者任务中。如果没有合适项目 重定向,我会将它重定向到 * Notes 中。我会为每个项目文件中添加像这样的备忘任务标题。备忘在创建时候都会自动标记 NOTE 标签,一般在capture这个备忘时就已经默认添加了。所以我也不需要额外再为它添加该标签,我只需要将它重定向到合适地方存储即可。只要 这个备忘在我的agenda管理的项目文件中(例如 在 org-agenda-files变量中的 文件),那么我就会很容易找到这个备忘,只要在备忘agenda视图,通过快捷键 F12 N 就可以快速找到. 我也仅仅使用备忘agenda视图中的默认的过滤标签的过滤功能,来达到该目的。
通常给备忘加个有意义的标题是非常有必要的,能够方便回想技术细节而不需要从浩如烟海的 备忘中先找到它,然后展开备忘细节,再通过细节来了解详情。如果有个有意义标题的话, 只需要通过 F12 N 就可以。
对于项目相关的备忘,由于不是特别通用,可以在项目结束时候跟随项目归档,然后从agenda视图中 移除。
我的所有org备忘都在org.org文件中,我的git备忘在git.org中,这两个文件中都会有个 * Notes 标题。只要需要,我就能够快速找到他们。对于工作以及项目相关的备忘,我将把他们重定向到合适的项 目下面,并存储到项目相关的org文档中,当项目完成归档后,就会从agenda视图移除。
2 处理来电
来电也是一种典型的中断的事件,我通常也是使用capture模板来创建(和所有的 中断事件一样)。对于来电任务,大部分工作都是通过capture模板完成的。我使用特 殊的capture模板来处理来电,并定制化一个函数从 bbdb 地址簿数据库中获取 用户信息来更新来电任务。
C-c c p 启动capture任务来捕获来电, 我也可以直接在模板中写备忘。光标在模板开始地方可以 插入来电人是谁。我可以使用 bbdb 查找函数,通过 f9-p 插入名称或者插入任何我想 插入的信息。如果 bbdb 项需要创建,我可以这么做,并且用 f9-p 在任何时间来代替 来电者信息。我发现当这个人如果查不到,自动调用bbdb查看函数会打断我的工作流。有时候 我希望先记下备忘,然后在来电处理完成后补齐来电者信息。
通过capture来电模板创建来电任务后,该任务就开始计时,我同时也可以在通话中或者通话后 在bbdb里查找并替换来电人信息。来电任务创建后会设置 :clock-in t 属性,这样来电 任务就会在创建后,自动启动计时。
当电话完成后,我就执行快捷键 C-c C-c 关闭capture缓冲区停止计时。如果我 需要提前关闭来电任务捕获缓冲区,然后去查询一些信息,我只需要执行 C-c C-c F9-SPC 关闭capture 缓冲区(同时会停止计时)然后切换计时器到上一个计时任务,当查询任务完成, 计时器又会回到电话任务上继续计时。当回电完成,关闭电话任务计时器,默认任务又会 重新启动计时器进行计时(这样计时信息也不会丢失).
下面是capture中电话模板相关的定制化脚本,之后是一些电话相关查询函数。
#+header: :tangle no
#+begin_src emacs-lisp
;; Capture templates for: TODO tasks, Notes, appointments, phone calls, and org-protocol
(setq org-capture-templates
(quote (...
("p" "Phone call" entry (file "~/git/org/refile.org")
"* PHONE %? :PHONE:\n%U" :clock-in t :clock-resume t)
...)))
#+end_src
#+header: :tangle yes
#+begin_src emacs-lisp
(require 'bbdb)
(require 'bbdb-com)
(global-set-key (kbd "<f9> p") 'bh/phone-call)
;;
;; Phone capture template handling with BBDB lookup
;; Adapted from code by Gregory J. Grubbs
(defun bh/phone-call ()
"Return name and company info for caller from bbdb lookup"
(interactive)
(let* (name rec caller)
(setq name (completing-read "Who is calling? "
(bbdb-hashtable)
'bbdb-completion-predicate
'confirm))
(when (> (length name) 0)
; Something was supplied - look it up in bbdb
(setq rec
(or (first
(or (bbdb-search (bbdb-records) name nil nil)
(bbdb-search (bbdb-records) nil name nil)))
name)))
; Build the bbdb link if we have a bbdb record, otherwise just return the name
(setq caller (cond ((and rec (vectorp rec))
(let ((name (bbdb-record-name rec))
(company (bbdb-record-company rec)))
(concat "[[bbdb:"
name "]["
name "]]"
(when company
(concat " - " company)))))
(rec)
(t "NameOfCaller")))
(insert caller)))
#+end_src
[注:本文部分图片来自互联网!未经授权,不得转载!每天跟着我们读更多的书]
互推传媒文章转载自第三方或本站原创生产,如需转载,请联系版权方授权,如有内容如侵犯了你的权益,请联系我们进行删除!
如若转载,请注明出处:http://www.hfwlcm.com/info/117305.html