Org-mode, 用文本文件管理日常(八)

13 篇文章 0 订阅
本文翻译自 http://doc.norang.ca/org-mode.html ,原文作者为Bernt Hansen 。由于原文较长,因此会分多篇文章来发布。转载请标记出处。
​
本节主要介绍作者如何处理备忘以及来电事件流程,通过这些流程可以加深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

关注如下公众号,可以查看更多详情:

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值