如何执行Vim替换命令而不影响当前的搜索模式?

foo*_*bar 6 vim

我想跳转到包含特定模式的行并确定是否应用 :s 命令。

但应用 :s 命令后,'/' 寄存器被 :s 命令中的模式替换,并且用原始模式跳转不太方便。

那么,它有没有一种舒适的方式来完成这个任务呢?
谢谢!

Pet*_*ker 5

Vim(版本 8+)提供了:keeppatterns防止搜索寄存器被您的命令更改的命令。例子:

:keeppatterns %s/foo/bar/g
Run Code Online (Sandbox Code Playgroud)

如需更多帮助,请参阅:h :keeppatterns


Dhr*_*gar 1

您可以通过 vim 脚本实现这一点。这些方面的内容应该有所帮助:

function! s:CustomSearch()
    let oldsearch = @/
    :%s/pattern/replace/flags
    let @/=oldsearch
endfunction
Run Code Online (Sandbox Code Playgroud)

  • 您还可以使用`:keeppatterns`。例如 `:keeppatterns %s/foo/bar/g`。参见 `:h :keeppatterns` (2认同)