如何在org-mode中的各个标题中跳转

如何快速折叠本标题

如何我们正在一个org的标题下浏览或输入文字,如果篇幅很长,我们想加到标题,或者想看下一级,那么首先想到的可能是把现在这个标题折叠起来,并将光标加到本标题的行,这个时候可以使用(org-kill-note-or-show-branches),它的快捷键就是我们很熟悉的 C-c C-k

还有一种作法是并不折叠,只是把光标跳转到本标题行,这就看接下来的在标题间的跳转。

如何在标题间进行跳转

在各个标题间跳转有很多命令可以实现,大家可以自行搜索 outlineorg heading 相关命令。我列出了几个我认为比较有用的。

在同级别标题间跳转

(org-forward-heading-same-level) 和 (org-backward-heading-same-level) 从字面上应该很好理解,在同级别的heading间跳转。如果光标是在heading内的话,无论运行哪个命令,都是先跳转到本标题。

如何在不同级别间跳转

(org-up-element) 和 (org-down-element) 从这两个命令的字面意义上也比较好理解,就是向上或向下一级。但是这两个命令并不是在标题间跳转,而是在org的元素中跳转,所以当本标题下有properties或其它drawer的话,(org-down-element)是跳转到标题的 properties,而不是标题。需要再运行一次才会跳转到下一个标题。

(outline-up-heading) 则是直接跳转到上一级的标题。

还有两个命令:org-next-visible-heading,它会跳转到最近的一个标题,所以如果有子标题的话,首先是跳转到第一个子标题,但前提是这个子标题必须是展开的。而(outline-next-heading)可以转到下一个标题,但如果是折叠状态下,它并不会展开。所以这两个命令对我就意义不大了。

网友A7R7的贡献

有一天在论坛上看到:https://emacs-china.org/t/ranger-lf-org-mode/25971 A7R7与我有同样的需求。

“左” 回到上一级文件夹

“右” 进入下一级文件夹

“上” 浏览同级前一个文件夹

“下” 浏览同级后一个文件夹

并且,同时仅预览同一个文件夹下的内容。

(defun my/outline-left ()
  (interactive)
  (hide-subtree)
  (outline-up-heading 1)
  (hide-subtree)
  (outline-show-children)
  (outline-show-entry))

(defun my/outline-up ()
  (interactive)
  (hide-subtree)
  (outline-backward-same-level 1)
  (outline-show-children)
  (outline-show-entry))

(defun my/outline-down ()
  (interactive)
  (hide-subtree)
  (outline-forward-same-level 1)
  (outline-show-children)
  (outline-show-entry))

(defun my/outline-right ()
  (interactive)
  (if (outline-has-subheading-p)
      (progn  (outline-next-heading)
              (outline-show-children)
              (outline-show-entry))
      ))

绑定快捷键配置

由于我暂并不需要在跳转时展开标题的内容,因此我简化了一下相关的配置。

(defun ian/outline-right ()
  (interactive)
  (if (outline-has-subheading-p)
      (progn  (outline-next-heading)
              (outline-show-children))))
(with-eval-after-load 'org
  (define-key org-mode-map (kbd "<C-S-up>") 'org-backward-heading-same-level)
  (define-key org-mode-map (kbd "<C-S-down>") 'org-forward-heading-same-level)
  (define-key org-mode-map (kbd "<C-S-left>") 'org-up-element)
  (define-key org-mode-map (kbd "<C-S-right>") 'ian/outline-right))
海上一民工

Related