如何在VIM中用缓冲区中的文本替换整行?

AZ.*_*AZ. 2 vim

这是我正在处理的文本:

第1行:网站=“a.com”;
...
第3行:网站=“b.com”;
...
第5行:网站=“c.com”;

假设我想将所有网站更改为“stackoverflow.com”,我可以这样做:
- 将“a.com”更改为“stackoverflow.com”
- 拉出整行(Y)
- 转到第 3 行,点击 p、k、dd从缓冲区粘贴并删除旧的“b.com”行。

现在的问题是,由于 dd 将“b.com”放入缓冲区,要替换第 5 行,我将不得不再次拉动整行。
有什么简单的方法可以让我快速用已经拉扯的线替换 line3 和 line5 吗?

更新:
感谢您的答案,现在有几种方法可以做到这一点:删除到黑洞、从命名缓冲区中提取等。我发现这是我最喜欢的方法(我使用键 R 而不是 r,因为有时我需要替换单个字符):

在 Vim 中,有没有一种方法可以在不将文本放入寄存器的情况下进行删除?

我在下面放置了一些类似问题的链接:

如何在 Vim 中删除(所需文本)、删除(不需要的文本)和粘贴(所需文本) 在 Vim 中,
有没有一种方法可以删除而不将文本放入寄存器?

Ari*_*zis 5

首先要事

\n\n

您可以通过不需要显式删除该行来做得更好:

\n\n
    \n
  1. 将整行拉入寄存器x"xY
  2. \n
  3. 转到下一行进行替换
  4. \n
  5. 直观地选择整条线:V
  6. \n
  7. 粘贴寄存器 x 中的选择:"xp
  8. \n
\n\n

"现在,删除的行一如既往地位于 register 中,但拉出的行仍位于 register 中x,因此您可以重复步骤 2 到 4,而无需一遍又一遍地拉动。

\n\n

重复的事情重复

\n\n

不幸的是,您无法.重复步骤 3+4。因此,如果您必须对很多行执行此操作,请插入更多步骤来记录宏:

\n\n
    \n
  1. 将整行拉入寄存器x"xY
  2. \n
  3. 转到下一行进行替换
  4. \n
  5. 将宏记录到w寄存器中:qw
  6. \n
  7. 直观地选择整条线:V
  8. \n
  9. 粘贴寄存器 x 中的选择:"xp
  10. \n
  11. 停止录音:q
  12. \n
  13. 转到下一行进行替换
  14. \n
  15. 重播录制到的宏w@w
  16. \n
  17. 转到下一行进行替换
  18. \n
  19. 现在终于可以像上次一样重播了:@@
  20. \n
\n\n

然后,您只需对接下来需要替换的 50 行重复步骤 9 和 10。

\n\n

最后(重复)的事情最后

\n\n

事实上,如果您通过搜索找到下一行,那么您也应该使用该搜索来转到第一行。因为这样n您用来转到下一行的内容可以作为宏 \xe2\x80\x93 的一部分包含在内,基本上您只需交换步骤 6 和 7 即可。

\n\n

然后您根本不需要\xe2\x80\x99 手动转到下一行进行替换,因为宏会将您发送到那里作为它的最后一件事。当您碰巧想跳过特定比赛时,您可以继续点击@@,以及偶尔点击s 。n

\n\n

参考

\n\n\n