我想将Org-mode中的缓冲区过滤为只匹配某些标记的标题。
我尝试C-c /
后跟tag1&tag2
。但是,Emacs不是缩小缓冲区,而是突出显示具有这些标记的每个标题旁边的星号......
如何更改此设置,以便Emacs实际上将缓冲区缩小到那些匹配的标题?
谢谢!
答案 0 :(得分:1)
原始海报使用的搜索正则表达式可能不正确。 org-occur
用于设置突出显示结果边界的子函数非常简单 - (while (re-search-forward regexp nil t) . . .)
匹配模式的开始和结束决定了突出显示区域的边界 - 即{{ 1}}和(match-beginning 0)
。
要搜索包含 或两个标记的标题,请在交互式调用(match-end 0)
时使用正则表达式:tag1:\|:tag2:
,即< strong>只有一个反斜杠和管道。当非交互式使用org-occur
时,需要两(2)个反斜杠和一个管道 - 例如org-occur
在按特定顺序查找两个一起的标签时,正则表达式如下所示:(org-occur ":tag1:\\|:tag2:")
:tag1:tag2:
的默认行为是折叠所有内容,然后仅展开匹配的结果 - 以前匹配的结果仍然可见,除非参数org-occur
是非空。如果缓冲区看起来完全展开(使用keep-previous
进行搜索后),则使用的正则表达式可能与所有内容相匹配。
检查并验证当前版本的org-occur
是否正在使用org-mode
也是谨慎的。
使用M-x org-version RET
搜索标记org-occur
答案 1 :(得分:1)
执行C-c / m tag1&tag2
可以达到您想要的效果 - 除了1级标题(即使它们不包含有用的条目,它们始终可见;但2级以上的条目只有在与您匹配时才可见请求)。
这与C-c / t
的工作方式相同(例如当前缓冲区中的所有TODO)。