3

鉴于这样的文字

你好世界

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

Cs世界

文本被突出显示

你好,世界

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

大家好

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

Cs World BS 全部

4

3 回答 3

5

好吧,您不能使用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,你可能想选择另一个键。

于 2012-08-13T23:40:32.893 回答
2

AFAIK,没有正式的方法可以完全按照您的意愿行事。如果根据您的定义不属于亲属,则最接近的方式将是“ C-s World M-% All” 。isearch-query-replacequery-replace

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

query-replace从要从最后一个搜索字符串替换的字符串开始。

于 2012-08-13T23:26:35.913 回答
1

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

快速设置

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

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+ 中还有其他一些好东西。例如,如果“World”是一个较长的词,例如“Worcestershire”,而您不想全部输入,您可以试试这个:

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

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

于 2013-02-15T22:49:36.583 回答