假设您有一棵以下形式的树:
* Top
** Item A
*** Lower
** Item B
** Item C
我想做的是能够创建一个包含项目 A 和项目 B 的区域,并运行命令将其更改为:
* Top
**
*** Item A
**** Lower
*** Item B
** Item C
将光标置于空白项上。我想知道类似的东西是否已经写入组织模式。如果没有,我可以自己编写,但在这种情况下,我想知道如何循环遍历我所在区域中的行来移动它们,避免比我的起始级别更低的项目。
最佳答案
天真的第一次尝试
从大纲开始
* Top
** Item A
*** Lower
** Item B
** Item C
如果我将光标放在 Top
后面并按 Alt + Return (org-insert-heading
)然后是 Alt + Shift + right (org-demote-subtree
) 我得到了结构
* Top
**
*** Item A
**** Lower
*** Item B
*** Item C
不幸的是,这会降级Item C
,而您似乎并不想要它。但是,您可以导航到此项目并按 Alt + Shift + left。但是,我认为这是一个简化的示例,并且需要一种更强大的方法,该方法不需要过多地移动文件。我们能做得更好吗?
transient 标记模式
通读structure editing在组织模式手册中我找到了注释
When there is an active region (Transient Mark mode), promotion and demotion work on all headlines in the region. To select a region of headlines, it is best to place both point and mark at the beginning of a line, mark at the beginning of the first headline, and point at the line just after the last headline to change.
也许这为我们提供了一条前进的道路。然而,我无法利用这些信息做任何明智的事情。希望其他人能够向我们展示它是如何完成的。
缩小到一个区域
我们可以移动更多的另一种方法是 "narrow"仅针对我们想要处理的区域的缓冲区。
选择行* Top
、** Item B
完整以及之间的所有内容(使用鼠标或通过,例如,使用 Ctrl + 空格 和 Ctrl + c + Ctrl + n (outline-next-visible-heading
)几次)。现在,我们可以通过将缓冲区“缩小”到该区域来将注意力集中在这个突出显示(或标记)的区域,以排除缓冲区中的所有其他文本(我们不会删除该文本,即使它看起来像这样,我们就将其隐藏一点。我们使用 Ctrl + x + n + 缩小区域范围n (narrow-to-region
)(请注意,如果您没有显式启用此功能,则会出现有用的消息)。我们始终可以使用 Ctrl + x + n + w(加宽
)。
在缩小的缓冲区中,我们现在只能看到:
* Top
** Item A
*** Lower
** Item B
如果我们现在重复我们天真的尝试中的步骤(见上文),然后返回到完整(加宽)缓冲区,我们会看到轮廓:
* Top
**
*** Item A
**** Lower
*** Item B
** Item C
这就是我们想要的最终结果!如果这是一个不必要的长答案,我深表歉意。我通过研究学到了很多东西,并想在这里记录下来。
关于emacs - 在新树下归档组织模式项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16992658/