emacs - 在新树下归档组织模式项目

标签 emacs org-mode

假设您有一棵以下形式的树:

* 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/

相关文章:

emacs - 更改 .emacs 文件的位置

emacs 组织模式,无法设置自定义 TODO 序列

emacs - 在组织模式下,如何中断当前部分并转至更高级别

emacs - 更改 emacs 上的初始目录,以及一些初学者的提示

regex - Emacs:replace-regexp 替换不改变大小写

haskell - 为 haskell 设置 emacs

emacs - 如何区分点的不同叠加

python - Org-mode babel python session 不产生结果

Emacs组织模式: Customize date picker layout

elisp - 每第二个月的第三个星期三重复一个项目