我怎么能在输入内容时使用像isearch-forward这样的查询替换

时间:2015-06-12 13:57:51

标签: emacs elisp

当isearch-forward作为一个命令运行时,我输入的上下文将在当前缓冲区中突出显示,但是当运行查询替换时,请高亮显示那个,我怎样才能使它变为高亮?

3 个答案:

答案 0 :(得分:1)

使用isearch-query-replace。它突出显示要替换的字符串。

答案 1 :(得分:1)

  1. 听起来你说query-replace没有突出显示所有匹配的事件。是对的吗? 应该突出显示它们。如果没有,则尝试在没有init文件的情况下启动Emacs:emacs -Q。如果显示不缺少突出显示,则递归地将您的init文件一分为二,以找到罪魁祸首。

  2. @Rocky提到isearch-query-replace。这不会改变突出显示(应该已经打开),但是它的作用是让你在isearching时开始查询替换,使用最后一个搜索字符串作为匹配文本的模式{ {1}}。

  3. 查询替换的替代方法,特别是如果您要进行的替换次数相对较少并且有很多匹配项,则可以使用on-demand replacement ,而isearching 。为此,您需要库Isearch+

    要按需更换任何给定的搜索匹配,只需点击 query-replace 即可。使用前缀arg,C-M-RET会提示您输入替换文本(默认情况下将替换为无文本,这意味着删除匹配)。因此,您可以在同一个Isearch调用中随时更改替换文本

    替换搜索匹配后,C-M-RET移动到下一个。因此,如果您想要替换几个连续的搜索命中,您可以重复使用它。或者使用C-M-RET跳过替换当前匹配并移至下一个匹配。

    按需搜索替换也适用于正则表达式搜索,就像查询替换一样,替换文本可以按字面顺序插入,也可以按C-s解释。在后一种情况下,您可以使用query-replace-regexp\&\=\N\#\,。您可以在Isearch期间随时使用 \? 来切换替换文本是按字面使用还是根据特殊的regexp替换构造进行解释。

答案 2 :(得分:1)

以下软件包为查询替换提供实时突出显示和替换预览,以及其他功能:

我目前使用visual-regexp-steroids.el

可以从MELPA安装所有三个包。