将大纲树重新归档到新的组织模式文件中?

Pet*_*ter 14 emacs org-mode

我刚刚开始使用 org-mode 并想象一个工作流,我在一个 org-mode“收件箱”文件中捕获新任务和笔记。对于成长为项目的任务,我想将它们重新写入一个新的组织模式文件,然后将其添加到我的议程中。

组织模式手动描述refiling树大多是我在寻找的方式,但它似乎只允许refiling同一文件中的部分。我想做的是将那棵树重新归档到一个新文件中(然后最好将该文件添加到议程列表中)。

我可以复制粘贴到一个新的缓冲区中,然后将新的缓冲区添加到议程中,但这似乎是组织模式众神拥有的捷径。

Jon*_*pin 5

将其他组织模式缓冲区添加到 refile 列表中,您需要在 .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))))
Run Code Online (Sandbox Code Playgroud)

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


Bri*_*n Z 2

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

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

*scratch*您可以通过粘贴到缓冲区并点击Ctrl+来快速尝试此代码j。然后转到组织模式文件中的子树并按Alt+xM-x subtree-to-new-file

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