Answers:
Motion上的Org Manual节点对内置命令org-goto
(默认绑定:)给出了较为简洁的描述,C-c C-j
可以轻松定制其行为以实现所需的效果:
C-h v org-goto-interface RET
如果您乐于放弃org-goto
通过缓冲区轮廓逐步搜索的默认行为,则可以切换为通过完成选择标题:
(setq org-goto-interface 'outline-path-completion)
诸如ido
/ ivy
/之类的完成包的用户helm
可能希望更改以下设置,以便立即查看整个目标路径:
(setq org-outline-path-complete-in-steps nil)
请参阅此处以获取更多讨论。
这种方法(与使用helm
特定功能相比)具有更多的好处(与使用插入默认值的所有完成框架一起使用)completing-read
,包括我个人确认的ivy
。
附录:
如本答案所述,当使用命令outline-path-completion
界面时org-goto
,可自定义变量org-goto-max-level
确定要提供的标题的最大深度。
编辑:
我发现了一个较旧的相关问题,并提供了有用的答案:https : //stackoverflow.com/q/15011703/3084001
澄清(由Att Righ的评论提示):
设置org-goto-interface
为两个公认的值之一并不意味着要牺牲替代接口。org-goto
使用前缀参数(即C-u C-c C-j
或C-u M-x org-goto RET
)进行调用会自动选择当前完成的替代接口。这样,您可以设置org-goto-interface
最可能使用的接口,并在需要临时切换行为时使用prefix参数。即使这仍然不能满足您的需求,也可以org-goto
按照Att Righ的示例始终编写自己的包装器。
outline-path-completion
不能helm
在我的盒子上很好地玩(不能完成一个关卡-通过按<TAB>
if helm
禁用来实现:请参阅helm-completing-read-handlers-alist
)
let
可用于任何形式的临时绑定;这个问题更多地是关于相关的设置/功能/软件包。实现接口临时切换的更通用方法是org-goto
使用prefix参数进行调用。我将在此答案中添加注释。
ivy
,但是仅当重新刷新并且在中使用了错误的深度设置时org-refile-targets
,因为org-goto
临时调整了与重新归档相关的设置以适应其需求。不幸的是,目前我无法探索其helm
功能,也许其他用户可以加入?
worf
或counsel-imenu
。
我使用包worf,但仅绑定了其中一个功能:
(use-package worf
:diminish worf-mode
:bind (:map org-mode-map ("C-c h" . worf-goto)))
worf-goto
为您提供迷你缓冲区中缓冲区的标题列表,然后可以对其进行过滤。
该软件包是由ivy的作者制作的,因此,如果您喜欢ivy,则可能会喜欢worf。
;; - "g" (`worf-goto'): select an outline in the current buffer, with
;; completion. It's very good when you want to search/navigate to
;; a heading by word or level. See https://github.com/abo-abo/lispy
;; for a package that uses this method to navigate Lisp code.
(defun worf-goto-action (x)
(with-ivy-window
(goto-char (cdr x))
(outline-show-children 1000)
(worf-more)))
(defun worf-goto ()
"Jump to a heading with completion."
(interactive)
(let ((cands (worf--goto-candidates)))
(cond ((eq worf-completion-method 'helm)
(require 'helm-multi-match)
(let (helm-update-blacklist-regexps
helm-candidate-number-limit)
(helm :sources
`((name . "Headings")
(candidates . ,cands)
(action . worf-goto-action)
(pattern-transformer . worf--pattern-transformer)))))
((eq worf-completion-method 'ivy)
(ivy-read "Heading: " cands
:action 'worf-goto-action)))))
counsel-imenu
完成功能比工作世界更好,但无法搜索level1组织的头条新闻。worfs搜索所有级别,因此我认为这是我想要的。
org-imenu-depth
大于默认值2的值?
公然的自我推销,但您可能想尝试orgnav。为此目的,这是我的Alpha项目(但我一直在积极使用)。
orgnav搜索标题而不是内容可以改变搜索的深度,搜索子树而不是整个文件(尽管也可以通过缩小来实现)。
这是一些功能的视频:https : //asciinema.org/a/1r0fp33xgwh48lfgsh7mllw4u
您可能还应该知道helm-org
软件包,其中的一部分helm
是此软件包的灵感(或者说,其局限性是此软件包的灵感),并helm-org-rifle
在其他文章中进行了讨论。
(此处提供的答案:https : //www.reddit.com/r/emacs/comments/69mc6l/how_to_jump_direct_to_an_orgheadline/
)另外,worf-goto
作为该功能的一部分worf
(组织导航模式,该功能将一组不同的键绑定应用于标题之前为“ *”)。这似乎非常类似于helm-org
。
(defun my-org-goto () (let ((org-goto-interface 'outline-path-completion)) (org-goto)))