VIM:如何替换一个单词

Sta*_*tas 12 vim replace

我猜,问题很常见.比方说,我们有一个源文件,希望用另一个字符串替换一些字符串.

通常,我使用以下命令:

:%s/test/testValue/gc
Run Code Online (Sandbox Code Playgroud)

但是,如果字符串很长并且我们只需要触摸它怎么办?键入类似的东西很无聊:

%s/someLongAndDirtyString/somelongAndDirtystring/gc
Run Code Online (Sandbox Code Playgroud)

是否可以将光标放在someLongAndDirtyString单词上,按下一些魔术键并在最后一行中获得以下内容?

%s/someLongAndDirtyString/someLongAndDirtyString/gc
Run Code Online (Sandbox Code Playgroud)

然后我们可以稍微更改新字符串并继续替换.

当然,这只是一个想法.请为我提供进行此类替换的最佳方式.

谢谢

Ben*_*oit 23

您可能对我给出的关于如何使用寄存器的答案感兴趣,但是这里有四种方法:

方法1

在编辑命令时,单击CTRLR然后CTRLW在光标下插入单词.

另见 :help c_CTRL-R

方法2

转到你的话,点击*,然后做:%s//replacement/g.当不使用搜索模式时,@/使用从寄存器中获取的最后搜索模式.

方法3(你可能会喜欢那个)

做一个:nnoremap <f12> :%s/<c-r><c-w>/<c-r><c-w>/gc<c-f>$F/i(ctrl-f由'cedit'选项决定)

您可以将此映射放入.vimrc中.
这会将F12键映射到您想要的位置,光标将保留在您想要的位置.

方法4

转到你的单词,点击*,然后执行:%s//CTRLR,//gc
CTRL-R然后/插入搜索寄存器的内容.


jma*_*ans 13

好吧,如果您的光标位于要替换的单词上,则可以点击*以突出显示并搜索该单词,然后您可以键入:

:%s//newstring/gc
Run Code Online (Sandbox Code Playgroud)

并且vim将在斜杠之间插入最后搜索的字符串.