我刚刚开始使用 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)
实际需要,另一部分设置要重新归档的最大级别数。