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

13 篇文章 0 订阅
本文翻译自 http://doc.norang.ca/org-mode.html ,原文作者为Bernt Hansen 。由于原文较长,因此会分多篇文章来发布。转载请标记出处。
本节主要介绍org归档功能,以及作者的归档流程,他山之石可以攻玉。

1 归档


1.1 归档子树

我更新了原来的归档流程。曾经我会将整个子树移动到该项目使用的,另外一个归档文件中。在agenda视图中,可以通过快捷键通过 a y 将 FILE.org 任务子树归档到 FILE.org_archive 文件中。

我还是会像以前一样将任务归档到原来那个归档文件中,现在我只会对那些已经完成并且非常老的任务才会做归档。我会在agenda视图最后部分列出需要归档的任务,这些任务意味着我已经花了很多时间在上面。归档历史任务可以让我的任务树变得更整洁,并且能够移除我已经不感兴趣的任务。在归档过程中,会在任务上添加额外的属性数据,表示该数据从何处归档而来,有助于在复原时候方便回退到原处。

我的归档文件比较大,但是到现在为止,我没有发现需要根据年份来将归档文件分割成多个文件的必要。

在上节的agenda视图中在新的月份开始时,我们可以看到一些需要归档的任务。那些已经完成的并且没有任何本月或者上月时间戳的任务(例如已经超过30天的任务)就可以归档。时间戳包含完成日期,便签,计时数据等-任何活跃以及不活跃的时间戳。

归档很简单,只要通过 m 标记所有要归档的项,然后通过 B $ 将他们归档到合适的位置, 每月只需要花5分钟就可以完成归档了。

1.2 归档设置

我现在不用 ARCHIVE 属性来标记需要归档任务。能够归档任务到归档文件中 Archived Tasks 大纲下即表示已经归档完成。

下列设置保证任务在归档后就不会显示在agenda中。这给归档未在完成状态的任务提供 了可能。默认情况下,任务被归档到归档文件 * Archived Tasks 中。

归档功能没法保证项目树完整。对于在done状态的比较老的任务,当对其归档后,它就会从主的org文件中移除了。当然也可以从归档文件中,根据任务属性,将原来任务复原回来,但是我从来不这么做。归档的属性还是非常有用的,每年我都会从归档数据中查看些任务, 除了这种情况外,归档的任务就只是用来做备份用。

#+header: :tangle yes
#+begin_src emacs-lisp
(setq org-archive-mark-done nil)
(setq org-archive-location "%s_archive::* Archived Tasks")
#+end_src
#+header: :tangle yes
#+begin_src emacs-lisp
(defun bh/skip-non-archivable-tasks ()
  "Skip trees that are not available for archiving"
  (save-restriction
    (widen)
    ;; Consider only tasks with done todo headings as archivable candidates
    (let ((next-headline (save-excursion (or (outline-next-heading) (point-max))))
          (subtree-end (save-excursion (org-end-of-subtree t))))
      (if (member (org-get-todo-state) org-todo-keywords-1)
          (if (member (org-get-todo-state) org-done-keywords)
              (let* ((daynr (string-to-int (format-time-string "%d" (current-time))))
                     (a-month-ago (* 60 60 24 (+ daynr 1)))
                     (last-month (format-time-string "%Y-%m-" (time-subtract (current-time) (seconds-to-time a-month-ago))))
                     (this-month (format-time-string "%Y-%m-" (current-time)))
                     (subtree-is-current (save-excursion
                                           (forward-line 1)
                                           (and (< (point) subtree-end)
                                                (re-search-forward (concat last-month "\\|" this-month) subtree-end t)))))
                (if subtree-is-current
                    subtree-end ; Has a date in this month or last month, skip it
                  nil))  ; available to archive
            (or subtree-end (point-max)))
        next-headline))))
#+end_src

1.3 归档标签 - 隐藏信息

我只有在一种情况下,才会对归档任务打上ARCHIVE标签,那就是这个任务非常大,里边包含非常多信息,这样的任务,我通常不想打开任务细节(以防止自己陷入浩如烟海的信息中)。当然,我可以通过 C-TAB打开它,如果我不介意自己陷入这种境地(比如说任务下有一个巨大的数据表)。通常情况下,我不希望显示这些信息(因此我会为它打上ARCHIVE标签)。

1.4 什么时候归档

每月归档一次对我来说已经足够了。我会将完成的任务保留30天。这能够保留最近30天计时信息,同样,能保证我的agenda视图时间上连续(这个月,上个月,以及没完成的任务)(方便随时查看历史任务完成信息)。因为我很少访问归档任务(因此把要归档的先保留下来,待查看). 这样可以使得 我减少从归档文件恢复任务的可能。

归档让我的记录任务的工作文件非常干净整洁。如果我真的需要去找归档的任务,我知道它一定就在归档文件中某个位置。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值