我知道如何在全局或选定区域中搜索和替换字符串。
但我有一个习惯,先浏览一个词,然后点击*
搜索那个词。这不仅会搜索单词字符串,还会忽略搜索字符串是其子字符串的其他字符串。所以搜索看起来像\<word\>
而不仅仅是word
.
现在我希望能够点击*
一个单词,然后替换该字符串的所有已搜索和突出显示的出现,而无需为搜索和替换命令再次输入它。有什么好的方法吗?
示例文本:
cat
concatenate
scat
dog and cat
Run Code Online (Sandbox Code Playgroud)
说*
在第一行按下,它将搜索模式\<cat\>
当搜索和替换过程中搜索字符串为空时,它将重用最后匹配的模式,所以这样做
:%s//CAT/g
Run Code Online (Sandbox Code Playgroud)
会导致
CAT
concatenate
scat
dog and CAT
Run Code Online (Sandbox Code Playgroud)
从 :h :substitute
如果替换命令的 {pattern} 为空,则该命令使用来自最后一个替换或
:global
命令的模式。如果没有,但有先前的搜索模式,则使用该模式。使用 [r] 标志,该命令使用来自最后一个替换:global
、 或搜索命令的模式。
要改变的行为*
,并#
在视觉选定的文本搜索文本,而不是整个单词中的一部分:
vnoremap * y/<C-R>"<CR>
vnoremap # y?<C-R>"<CR>
Run Code Online (Sandbox Code Playgroud)