将大纲树重新归档到新的 org-mode 文件中?

将大纲树重新归档到新的 org-mode 文件中?

我刚刚开始使用 Org-Mode,并设想了一种工作流程,通过该工作流程,我将新任务和笔记捕获到 Org-Mode“收件箱”文件中。对于发展为项目的任务,我会想象将它们重新归档到新的 Org-Mode 文件中,然后将其添加到我的议程中。

org-mode 手册描述了重新归档树的大部分方式,就像我所寻找的那样,只是它似乎只允许重新归档同一文件中的部分。我想要做的是,获取该树,并将其重新归档到新文件中(然后最好将该文件添加到议程列表中)。

我可以将其复制粘贴到一个新的缓冲区中,然后将该新缓冲区添加到议程中,但这似乎是 org-mode 之神会提供的快捷方式。

答案1

这是一个快速而肮脏的 elisp 函数,您可以根据需要进行修改。

(defun 子树到新文件()
  (交互的)
  “草率地协助将组织子树移动到新文件”
  (组织复制子树无t)
;;; 这个长的 setq 语句获取第一个标题的标题,用作新 .org 文件的默认文件名。
(setq 第一个标题
  (带临时缓冲区
    (猛拉)
    (缓冲区开始)
    (向前搜索“”无无1)
    (setq 标题开始(点))
    (视线结束)
    (setq 标题结束(点))
    (setq 第一个标题(缓冲区子字符串标题开始标题结束))
  ))
(setq def-filename(concat 第一个标题“.org”))
(让((插入默认目录 t))
  (查找文件其他窗口  
    (read-file-name "将子树移动到文件:" def-filename)
  ))
(组织粘贴子树)
;;; 这最后一条命令将新的 .org 文件添加到议程
(组织议程文件到前端)

你可以快速尝试一下此代码,将其粘贴到*scratch*缓冲区并点击Ctrl+ j。然后转到 org-mode 文件中的子树并点击Alt+ 。xM-x subtree-to-new-file

如果您希望每次使用 emacs 时它都到位,并且完全不熟悉 elisp,最简单的方法可能是将此代码粘贴到.emacs配置文件中的某个位置并保存。您还可以在函数之前或之后添加一行以为其提供键绑定。最简单的方法(但可能不是最好的)是这样的:(global-set-key "\C-xw" 'subtree-to-new-file)

答案2

要将其他 org-mode 缓冲区添加到重新文件列表,您需要在 .emacs 文件中添加如下一行。我从 Brent Hansen 的配置中获取了此信息(参见这里

; Targets include this file and any file contributing to the agenda - up to 9 levels deep
(setq org-refile-targets (quote ((nil :maxlevel . 9)
                                 (org-agenda-files :maxlevel . 9))))

只有(org-agenda-files :maxlevel .9)实际需要,另一部分设置要重新归档的最大级别数。

相关内容