假设我们有一段文本,我进入了视觉模式并选择了一些文本。如何快速搜索高亮显示的文本并将其替换为其他内容?
假设我们有一段文本,我进入了视觉模式并选择了一些文本。如何快速搜索高亮显示的文本并将其替换为其他内容?
vnoremap <C-r> "hy:.,$s/<C-r>h//gc \|1,.&& <left><left><left><left><left><left><left><left><left><left><left>
首先,从当前行到文本末尾进行替换.,$
,然后从开头到当前行重复替换\|1,.&&
。11个<left>
将光标放在正确的位置。
我认为你不能直接做到这一点。但很多人喜欢这个功能,所以有很多宏等工具(我自己也添加了)。这里是一个例子,你可以添加它;只需按下*
键即可在视觉上选择的文本中搜索下一个匹配项。
:%s,\%#\%V\_.*\%V/,**&**,c
:%s!\%#\%V\_.*\%V!\=system("base64 -w 0",@")!c
\%# matches cursor
\%V matches inside the selection only
\_. matches any character.
\_.* matches beginning to end of selection.
解释 RHS:
\=expr() Replace match with result of expr() for each substitution.
我没有足够的声望来评论,所以我正在添加另一个答案...
vnoremap <C-r> "0y<Esc>:%s/<C-r>0//g<left><left>
@dmd 和 @dotancohen:对我而言,这个方法可行,而且不需要使用 "h
(显式地使用 0,因为它已经是最后一次复制的位置),并且可以在 putty ssh -> mint (lmde) 上工作;不知道 cent。还使用了 @Niloct 和 @Nathan Friend 的评论来消除确认。
我最喜欢的简短版本是:
vnoremap s/ y:s/" /
然后你可以选择文本并按s/,就可以开始替换命令了。
"
视为文字处理。但 <c-r>"
可以使用。 - Josh Bodah