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

时间:2017-03-30 10:09:00

标签: vim

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

但在申请:s命令后,' /' register被s命令中的模式替换, 用原始模式跳转并不是很方便。

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

3 个答案:

答案 0 :(得分:2)

Vim(版本8+)提供:keeppatterns命令,可防止命令更改搜索寄存器。例如:

:keeppatterns %s/foo/bar/g

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

答案 1 :(得分:1)

您可以通过vim-script实现这一目标。这些方面的东西应该有所帮助:

function! s:CustomSearch()
    let oldsearch = @/
    :%s/pattern/replace/flags
    let @/=oldsearch
endfunction

答案 2 :(得分:1)

Vim手册(:help histdel)提供了另一种删除最后搜索模式的方法:

call histdel("search",-1)
let @/ = histget("search",-1)