如何使用vi将当前行替换为缓冲区中的内容

5

假设我有一行文本存储在缓冲区k中,如何用缓冲区的内容替换掉某行文本?


3
我想这样也可以,或者你还在寻找其他的东西吗:dd"kP - falstro
同样的,注意如何将一行复制到缓冲区中? - vehomzzz
6个回答

7

在需要替换的文本行任意移动光标。执行缓冲区命令 P(将内容放在当前行之上)。运用 dd 命令删除当前行。

所以,"xPdd


5

进入您想要更改的行,并执行

V"kp

这个的唯一缺点是在gvim中可能会更改系统剪贴板的内容。 - Benj
只需固定 v_p -> https://dev59.com/5nVC5IYBdhLWcg3wcwsm#290723 - Luc Hermitte
哈哈,是的,我想那也是一种可能性。 - Benj

4

正如其他人所说,总的来说,使用dd"kP可以解决问题。我想补充一点,你可能想使用:g,这样如果你想用寄存器k的内容替换所有匹配'foo'的行,你可以这样做:

:g/foo/normal dd"kP

请注意,如果缓冲区的第一行匹配该模式,则使用p而不是P会导致一些问题。


3

我能想到的最好方法是:

"ayy (这将该行复制到“a缓冲区)

然后

dd (删除该行到标准缓冲区)

然后

"aP(在当前行之前插入缓冲区“a”)


1

你需要的是引号键 "。这使得你的复制/粘贴寄存器具体化。所以,如果你有一个在寄存器 k 中的东西,并且你想用它替换当前行,你可以输入:

^c$<esc>"kp

0

你可以使用ctrl-v并选择要复制的内容,然后按下“y”键将其“拔出”。然后使用ctrl-v或shift-v选择要替换的“某些行”,并按下“p”键粘贴它。


我不是即刻复制任何东西。我是预先存储某些行,以用于替换代码中的某些行。 - vehomzzz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接