【发布时间】:2011-12-22 17:28:46
【问题描述】:
我知道我可以通过按 TAB 键转到块标题并折叠/展开。 然而,假设我在一个有数百行的块内,我只想折叠 current 块,而不 不必去块头——在那里可以做到这一点的键盘快捷键?或者是否有一个 elisp 函数可以做到这一点,以便我可以将一些快捷方式绑定到该函数?
【问题讨论】:
我知道我可以通过按 TAB 键转到块标题并折叠/展开。 然而,假设我在一个有数百行的块内,我只想折叠 current 块,而不 不必去块头——在那里可以做到这一点的键盘快捷键?或者是否有一个 elisp 函数可以做到这一点,以便我可以将一些快捷方式绑定到该函数?
【问题讨论】:
创建一个执行以下功能的键绑定:
(defun zin/org-cycle-current-headline ()
(interactive)
(outline-previous-heading)
(org-cycle))
这将跳回到上一个标题,然后循环。由于标题已经打开,它将关闭它。它还将点放在标题的开头。
如果您将两个命令包装在(save-excursion ) 中,它将保留该点,但这可能导致在省略号内输入信息而没有意识到。或者,您可以更改命令以调用非交互式表单:
(defun zin/org-cycle-current-headline ()
(interactive)
(org-cycle-internal-local))
这相当于上面的(save-excursion )。
【讨论】:
C-c C-p 将带您进入标题,TAB 将折叠。您可以为此创建一个键盘宏,或等效的 ELISP:
(defun up-n-fold ()
(interactive)
(progn
(outline-previous-visible-heading 1)
(org-cycle)))
编辑:将 C-c p 更正为 C-c C-p,如下面的许多人所述。谢谢!
【讨论】:
C-c p(或任何C-c <char>)默认不应绑定到任何东西。这是为最终用户配置保留的,并且(至少在 Emacs 24 中)org-mode 似乎尊重这个约定。也许你应该检查一下你绑定了什么?
我不确定这样的功能是否存在,但创建一个并不难。只需将以下击键替换为函数:C-M-r^*Entertab。
【讨论】:
isearch-backwards 不是正则表达式搜索,因此 ^ 不是行首。其次,你需要登上头条才能循环。
isearch-backward-regexp。 isearch-backwards 由 C-r 运行。