我非常喜欢anything.el
。任何UI都很精彩。
我也经常使用isearch
,它提供了键绑定 M-s o 来使用occur
输入字符串调用isearch
。但本机发生模式不够强大。
在occur-mode
中,您无法再次过滤结果。跳跃功能也很基本。
我发现anything-occur
比occur
更强大,你可以过滤结果,以任何风格跳转一个位置。
但是有一个问题,如何整合anything-occur
?我的最后一次尝试是:
(defun occur-in-isearch ()
(interactive)
(let ((case-fold-search isearch-case-fold-search))
(occur (if isearch-regexp isearch-string (regexp-quote isearch-string)))))
我将occur
替换为anything-occur
,但没有用。 anything-occur
是一个不带参数的defun。我无法将isearch字符串传递给anything-occur
。
我如何整合anything-occur
?或者有更好的方法在anything-occur
中使用isearch-mode
吗?
答案 0 :(得分:1)
我不是任何用户,但这段代码可以达到你想要的99%。唯一需要注意的是,当您键入 backspace 时,初始输入字符串无法正确更新。我不知道为什么会这样。其他所有工作似乎都按预期工作。
(eval-after-load "isearch"
'(define-key isearch-mode-map (kbd "M-s o") 'isearch-anything-occur))
(defun isearch-anything-occur (regexp &optional nlines)
"isearch anything occur"
(interactive
;; from isearch-occur
(list
(cond
(isearch-word (concat "\\b" (replace-regexp-in-string
"\\W+" "\\W+"
(replace-regexp-in-string
"^\\W+\\|\\W+$" "" isearch-string)
nil t)
"\\b"))
(isearch-regexp isearch-string)
(t (regexp-quote isearch-string)))
(if current-prefix-arg (prefix-numeric-value current-prefix-arg))))
;; from occur-anything
(let ((anything-compile-source-functions
;; rule out anything-match-plugin because the input is one regexp.
(delq 'anything-compile-source--match-plugin
(copy-sequence anything-compile-source-functions))))
(anything :sources 'anything-c-source-occur
:input regexp
:buffer "*Anything Occur*")))
答案 1 :(得分:0)
非常相似 -
在冰柱中,在Isearch期间点击S-TAB
。点击RET
接受相同的搜索模式,或先修改后再点击RET
。
这会打开 Icicles 搜索所有匹配作为搜索上下文。要使用更多模式缩小/过滤这些上下文,只需键入更多文本。
要逐步过滤多个模式,请在模式之间点击M-SPC
。使用C-down
(等)在匹配项中循环或完成其中任何一项,或点击C-mouse-2
中任意一项的*Completions
。
http://www.emacswiki.org/emacs/Icicles_-_Isearch_Enhancements#IciclesSearchFromIsearch