Emacs:结合iseach-forward和recenter-top-bottom

Raf*_*lGP 9 emacs search

非常感谢您提前帮助.

在Emacs中,我喜欢使用iseach-forward(Cs),但如果突出显示的fount单词位于屏幕中间而不是最底部,我会更喜欢它.

我发现自己不断这样做:

Cs foo Cs Cs Cs ......哦!这就是我要找的'foo'!氯

有没有办法将搜索结果置于屏幕中间?

干杯

Gre*_* E. 5

最好的方法可能是添加以下钩子:

(add-hook 'isearch-mode-end-hook 'recenter-top-bottom)
Run Code Online (Sandbox Code Playgroud)

这将recenter-top-bottom在每次成功增量搜索完成时执行命令.

编辑:我已经调查了一下,并且在重复搜索相同字符串时执行的函数(即,在主动搜索的连续输入C-sC-r在活动搜索期间)似乎是isearch-repeat-forward和/或isearch-repeat-backward.因此,如果您希望重新定位每个重复,除了定义上面的钩子之外,还需要建议所述函数,如下所示:

(defadvice
  isearch-repeat-forward
  (after isearch-repeat-forward-recenter activate)
  (recenter-top-bottom))

(defadvice
  isearch-repeat-backward
  (after isearch-repeat-backward-recenter activate)
  (recenter-top-bottom))

(ad-activate 'isearch-repeat-forward)
(ad-activate 'isearch-repeat-backward)
Run Code Online (Sandbox Code Playgroud)

就个人而言,我觉得产生的行为是非常烦人,迷失方向,但德gustibus非EST disputandum.也许保留recenter-top-bottom在初始中isearch-mode-end-hook使用并recenter单独使用在对repeat函数的建议中将不那么令人讨厌.

建议isearch-forward本身相当于添加我最初建议的钩子,似乎对重复搜索没有影响.添加钩子更简单,我认为更惯用,所以它可能比建议功能更受欢迎.


Nic*_*out 1

你可以用来defadvice运行recenter-top-bottomafter isearch-forward