如何在emacs组织模式下将子标题移动到其他标题下
我的列表如下所示:如何在emacs组织模式下将子标题移动到其他标题下,emacs,org-mode,Emacs,Org Mode,我的列表如下所示: * TODAY ** TODO Item 1 ** TODO Item 2 * TOMORROW ** TODO Item 3 ** TODO Item 4 …作为一个单一的列表,基于我的一些建议。 我想把第二项的待办事项从今天移到明天 手册: 但是,虽然我可以更改项目1和项目2的位置,但我不能将项目2移到“今天”标题之外——我不能将其移到“明天”标题下的项目3之前。缓冲区告诉我: 无法移动超过上级或缓冲区限制组织模式 什么样的按键可以让我将子项“上一级”移动到新标题下?
* TODAY
** TODO Item 1
** TODO Item 2
* TOMORROW
** TODO Item 3
** TODO Item 4
…作为一个单一的列表,基于我的一些建议。
我想把第二项的待办事项从今天移到明天
手册:
但是,虽然我可以更改项目1和项目2的位置,但我不能将项目2移到“今天”标题之外——我不能将其移到“明天”标题下的项目3之前。缓冲区告诉我:
无法移动超过上级或缓冲区限制组织模式
什么样的按键可以让我将子项“上一级”移动到新标题下?您可以使用C-C C-w(org refile
)并指定要将待办事项发送到的标题
正如您将在该函数的文档(C-h forg refile
)中看到的,您可以自定义org refile targets
和org reverse note order
变量,以确定可能的目标标题列表和移动项目在目标标题中的位置。这里有两个选项:
M-left
将项目2提升到顶层,然后使用M-down
将其向下移动到“明天”下方,最后使用M-right
将其降级到“明天”下方org Cut special
(C-C-x C-w
)剪切“Item 2”子树,然后使用org paste special
(C-C-x C-y
)将其粘贴到“明天”下我在做beamer演示时经常这样做。对我来说,最简单的方法就是按照示例列表中的方法折叠物品,基本上杀死并拉扯该区域。也就是说,转到
**TODO项2
行的开头,设置标记(C-[SPACE]
),将该点移动到下一行的开头(C-n
),杀死该区域(C-w
),将该点移动到*明天
标题下所需的位置,然后将其拉回(C-y
)。获取区域而不仅仅是行(使用C-k
)是很重要的,这样可以获得所有折叠的位。与上面的sanityinc类似,我采用的解决方案是
为此构造一个宏可能会更好,但它是直观的,并不像看上去那么糟糕。尽管如此,如果C-M-down或其他什么东西这样做会更方便。派对有点晚,但为了扩展Mittenchops答案,我创建了以下宏
(defun org-move-subtree-to-next-superior()
“将子树移动到下一个上级。”
(互动)
(组织提升子树)
(组织向下移动子树)
(组织降级子树)
(全局设置键(kbd“C-C-x t”)'组织将子树移动到下一个上级)
最简单的方法,只需使用M-shift-up或M-shift-down,您就可以将项目移动到上级级别。太棒了,谢谢@sanityinc。是的,我认为(1)是我做这件事最干净的方式。但我最终还是以另一种方式工作。我将标题“明天”降级为带有M-right
的副标题,然后将其上移,M-up
,然后重新升级M-left
。也许这需要提出另一个问题——我是emacs新手——但是有没有一种简单的方法可以将m-right m-up m-left
绑定到一个宏,比如C-m-up
?你应该读一下键盘宏,它可以保存为函数并绑定到键以备将来使用。直接编写一个函数来实现您想要的功能也很简单,但这超出了这个问题或注释的范围。谢谢。它(还没有?)在中提到?也许这是一个新的功能?这对我不适用。
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.
(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)