Vim - 用寄存器替换匹配模式的每一行

时间:2018-03-21 17:10:36

标签: vim neovim

假设注册y填充了一些文本。我可以用缓冲区y替换匹配某个模式的缓冲区中的每一行吗?

我认为它类似于:

:g/[pattern]/"yp

但这绝对不起作用(而且我知道不管怎样都不会尝试)。有没有办法在一次失败中做到这一点?

1 个答案:

答案 0 :(得分:5)

一种方法是使用:s\=

:%s/.*pattern.*/\=@y

使用:global,您需要(未经测试的)

之类的内容
:g/pattern/exe "normal! S\<c-r>y\<esc>"

可能以下内容可行(我不确定,因为我在可视模式下更改了p行为 - &gt;未经测试)

 :g/pattern/normal! V"yp

或以下不会更改默认寄存器:

 :g/pattern/call setline('.', @y)