org-mode有没有只检索headline的功能?

我的原始org文件很大,里面的内容是基于各级标题(也就是headline)来组织的。org原生了很多对标签,或者对全文的中灵活的检索功能。有没有只搜索headline的功能,搜到了直接定位到那个headline的位置上?

谢谢!

2 个赞

或者是我自己用正则表达式:“以一个*星号开头的,后面是我要检索的某个串”?

试试counsel-outline

2 个赞

解决了,爽!

谢谢,哈哈哈!

用正则表达式可以用

“*+ +.+foo”

来检索所有包含“foo”的headline(至少有一个*,后面至少有一个空格,后面有任意个任意字符,后面有一个foo),展开所有符合条件的headline(不展开headline的下级子树)。 因为这个结果是集合,所以不会定位光标到某个位置,需要自己移动光标。

3楼的朋友建议的方式,把全部headline列表出来,然后在这个结果集上增量检索(或者直接移动光标在结果集合上手动选择),最终可以精确定位到某一个的headline上,然后回车就到这个目标上面。这个是最满足需要的。赶快绑一个快捷键哈哈。

使用 counsel-imenu 貌似也可以。

3 个赞

ivy用shift+space貌似可以增量搜索

是的,可以的。不过我刚才试的

counsel-imenu

只搜索到level 2的headline。cunsel-imenu和imenu-list都是针对2级headline,refile默认也是操作2级的,这样也是有道理的:默认就到2级可以在各种操作后folded,提供这个基础框架。

谢谢站长的建议。

1 个赞

helm-imenu也是一个很好的选择,不知道counsel-imenu有没有设置headline级别的选项,在helm-imenu中,你可以通过设置级别来扩展或者缩小搜索的范围。

请问检索一个目录下所有文件的标题怎样比较快呢? obsidian我最喜欢的就是这个功能

谢谢建议,我现在还没有进入helm的世界,哈哈,我很菜的。

你好,我没有想过在org中怎么做这个检索,我可能会用shell命令来操作吧。obsidian我没有接触过,见笑啦!

应该可以自己写个函数收集所有headline,然后 ivy列出来,选择哪个就进入对应的文件中?

看你用啥, ivy, helm, consult 各有不同的方案

试了试, consult的确可以, 但速度还是太慢了, 大概收集起来要快10s, 一共有快10000个标题, 慢也不足为奇.

consult-org-heading