如何在emacs org-mode中将子标题移动到其他标题下方

22

我的列表长这样:

* TODAY
** TODO Item 1
** TODO Item 2
* TOMORROW
** TODO Item 3
** TODO Item 4 

我想把待办事项2从“今天”移动到“明天”,并将它们作为单个列表列出,这是基于我在这里得到的一些建议。

手册说:

M-up
M-down
Move the item including subitems up/down (swap with previous/next item of same indentation). If the list is ordered, renumbering is automatic. 

虽然我可以更改项目1和项目2的位置,但我无法将项目2移动到今天标题之外 - 我无法将其下移到明天以在项目3之前。缓冲区告诉我:

cannot move past superior level or buffer limit org mode

有什么按键可以让我将子项目“超越上级级别”移动到新标题下面吗?

6个回答

22
你可以使用C-c C-w (org-refile)命令,指定你想要发送TODO事项的标题。
正如你在这个函数的文档中看到的一样(C-h forg-refile),你可以自定义org-refile-targetsorg-reverse-note-order变量来确定可能的目标标题列表和移动项目在目标标题中的位置。

10

以下有两个选项:

  1. 使用 M-left 将项目2提升到顶层,然后使用 M-down 将其下移至“TOMORROW”下方,最后使用 M-right 使其降级到“TOMORROW”下。

  2. 使用 org-cut-special (C-c C-x C-w) 剪切“Item 2”子树,然后使用 org-paste-special (C-c C-x C-y) 粘贴到“TOMORROW”下面。


注:M-left, M-down 和 M-right 是Emacs中的特殊键位组合,这里不做解释。

太棒了,谢谢 @sanityinc。是的,我觉得(1)对我来说是最干净的方法。不过我最终还是用了另一种方法。我将标题“明天”降级为带有 M-right 的子标题,然后向上移动它,M-up,然后重新提升它 M-left。也许这值得另一个问题——我是 Emacs 初学者——但是否有一种简单的方法将 M-right M-up M-left 绑定到单个宏中,比如 C-M-up - Mittenchops
你应该了解一下键盘宏,它们可以保存为函数并绑定到按键上以备将来使用。直接编写一个实现所需功能的函数也很简单,但这超出了本问题或评论的范围。 - sanityinc

9
最简单的方法,只需使用M-shift-up或M-shift-down即可将项目移至上一个级别。

谢谢你。这在 https://orgmode.org/manual/Structure-Editing.html 中还没有提到(吗)?也许这是一个相对较新的功能? - Felizett

2

在制作Beamer演示文稿时,我经常需要这样做。对我来说最简单的方法是像您在示例列表中所示那样折叠然后将项目杀死和复制。也就是说,转到** TODO Item 2行的开头,设置标记(C-[SPACE]),将光标移动到下一行的开头(C-n),删除区域(C-w),将光标移动到您想要放置在* Tomorrow标题下的位置,然后将其粘贴回去(C-y)。重要的是获取区域而不仅仅是行(使用C-k),以便获取所有折叠的位。


1

与sanityinc的解决方案类似,我采用的解决方案是...

  1. 将光标移动到*TOMORROW
  2. 使用M-right将其降级为**
  3. 将光标移动到TODO项目2
  4. 使用M-down将其下拉到**TOMORROW下面
  5. 将光标返回**TOMORROW并使用M-left重新升级

为此构建一个宏可能会更好,但这很直观,不像看起来那么糟糕。不过,如果有C-M-down或其他什么东西可以做到这一点,那就更方便了。


1

有点晚了,但为了扩展Mittenchops的答案,我创建了以下宏。

(defun org-move-subtree-to-next-superior()
  "Moving subtree to next superior."
  (interactive) 
  (org-promote-subtree)
  (org-move-subtree-down)
  (org-demote-subtree))
(global-set-key (kbd "C-c C-x t") 'org-move-subtree-to-next-superior)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接