给出这样的文字
你好,世界
我对“世界”进行增量搜索
C-s World
文字高调
您好,世界
现在我想输入新文本“All”而不是突出显示并获取:
你好,全部
我该怎么做? (注意,我不是在寻找“查询替换”或类似的东西)。理想情况下,它必须是这样的事情:
C-s World BS All
答案 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