求教org中todo已完成纪录怎么自动归档到外部文件

在配置里定义一个新的方法

(defun archive-done-tasks ()
  (interactive)
  (save-excursion
    (goto-char (point-min))
    (while (re-search-forward
            (concat "\\* " (regexp-opt org-done-keywords) " ") nil t)
      (goto-char (line-beginning-position))
      (org-archive-subtree))))

如果只是想对特定的 org 文件起作用,在对应的文件开头加上

-*- mode: org; after-save-hook: (archive-done-tasks) -*-

如果想对所有 org 文件起作用,那么

(defun enable-auto-archive ()
  (add-hook 'after-save-hook 'archive-done-tasks))
(add-hook 'org-mode-hook 'enable-auto-archive)

示例如下,task.org 里有三个任务,保存后自动将状态为 DONE 的挪到 task.org_archive 文件中了

org-archive-done

6 个赞