这是我正在处理的文本:
第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 中,
有没有一种方法可以删除而不将文本放入寄存器?
您可以通过不需要显式删除该行来做得更好:
\n\nx
:"xY"
现在,删除的行一如既往地位于 register 中,但拉出的行仍位于 register 中x
,因此您可以重复步骤 2 到 4,而无需一遍又一遍地拉动。
不幸的是,您无法.重复步骤 3+4。因此,如果您必须对很多行执行此操作,请插入更多步骤来记录宏:
\n\nx
:"xYw
寄存器中:qww
:@w然后,您只需对接下来需要替换的 50 行重复步骤 9 和 10。
\n\n事实上,如果您通过搜索找到下一行,那么您也应该使用该搜索来转到第一行。因为这样n您用来转到下一行的内容可以作为宏 \xe2\x80\x93 的一部分包含在内,基本上您只需交换步骤 6 和 7 即可。
\n\n然后您根本不需要\xe2\x80\x99 手动转到下一行进行替换,因为宏会将您发送到那里作为它的最后一件事。当您碰巧想跳过特定比赛时,您可以继续点击@@,以及偶尔点击s 。n
\n\n