如何最快速地编辑增量搜索突出显示的文本?

时间:2012-08-13 22:39:24

标签: emacs

给出这样的文字

  

你好,世界

我对“世界”进行增量搜索

  

C-s World

文字高调

  

您好,世界

现在我想输入新文本“All”而不是突出显示并获取:

  

你好,全部

我该怎么做? (注意,我不是在寻找“查询替换”或类似的东西)。理想情况下,它必须是这样的事情:

  

C-s World BS All

3 个答案:

答案 0 :(得分:4)

你不能使用 backspace ,因为修改你的查询需要这个密钥。

我在初学者中有这个:

(defun le::isearch-kill-result ()
  (interactive)
  (if (use-region-p)
      (call-interactively 'kill-region)
    (kill-region (point) isearch-other-end))
  (isearch-exit))
(define-key isearch-mode-map [(control w)] 'le::isearch-kill-result)

当我搜索时,我的观点永远不会有用,所以我不介意压倒一切 C-w ,您可能想要选择另一个密钥。

答案 1 :(得分:2)

AFAIK,没有正式的方法来做你想要的。如果C-s World M-% All根据您的定义不属于isearch-query-replace亲属,则最接近的方式是“query-replace”。

  

(isearch-query-replace &optional DELIMITED REGEXP-FLAG)

     

使用字符串启动query-replace以从最后一个搜索字符串中替换。

答案 2 :(得分:1)

这也困扰着我,所以这就是我最终想出来的。

快速设置

首先,您需要Isearch+。 如果你在Emacs 24或更高版本(或者有ELMA / package.el),你可以通过

获得Isearch +
M-x package-install <RET> isearch+ <RET>

然后将此行添加到.emacs

(global-set-key (kbd "C-.") 'isearchp-set-region-around-search-target)

然后将光标放在最后,C-x C-e在当前会话中进行此更改。 (这使用C-.,您可以将其更改为您想要的任何键。)

如何使用

C-s World C-. C-w All

如何运作

正在选择(以适当的Emacs说法,它将活动区域设置为突出显示的文本),然后C-w正在查杀该文本(将其置于杀戮戒指中)。现在,如果您需要World,则可以稍后粘贴字符串C-y

如果单词很长

isearch +还有其他一些好东西。例如,如果“世界”是一个较长的单词,如“伍斯特郡”,并且您不想全部输入,您可以试试这个:

C-s W C-( C-. C-w All

使用isearch +,C-(会将当前“搜索目标”中其余单词的搜索结果放入搜索中,因此在这种情况下,它会为当前的i-search添加orchestershire