如何在 Vim 中粘贴多行文本?

4
问题:
我正在使用:g/^/+d删除/复制每隔一行的内容。但是,当我尝试粘贴所有这些行时,只有最后一行被粘贴了。如何粘贴我删除/复制的每一行? 解决方案:
谢谢大家!在你们的帮助下,我完成了我的视频(我在一个名为Vim Girl的Youtube频道上工作,在那里我制作了指导性的Vim Golf挑战)。如果您感兴趣,可以点击以下链接查看:https://youtu.be/S9o5bHUAbP0

1
你能澄清一下你打算把所有行粘贴到哪里吗?是全部放在一个位置(例如在文件末尾)吗? - Patrick Bacon
是的,全部在一个位置。由于我要删除每一行之后,在执行完:g/^/+d命令后会剩下几行。我想把我删除的所有行粘贴到这些剩余行之后的位置。希望这样说得清楚! - seemcat
1
这不是一个编程问题。还有其他针对高级用户vim用户的SE网站。欢迎来到Stack Exchange网络! - jpaugh
请接受最能解决您问题的答案。点击此处了解如何接受答案。 - jpaugh
3个回答

7
您可以使用大写字母的寄存器来追加到一个寄存器中。首先通过执行:let @a=''qaq来清空寄存器,然后再执行您的命令。
:g/^/+d A

现在你的结果在寄存器"a中。例如:"ap

假设你是将所有内容粘贴到底部,那么它可能看起来像下面这样:

:let @a=''
:g/^/+d A
:$pu a

注意:这相当于:g/^/+m$ 更多帮助请参见:
:h :let-@
:h :d
:h quote_alpha

运行得很好,谢谢! :) - seemcat

2

使用鼠标选择要复制的所有行,按下^shiftc以复制文本。

现在粘贴,到您想要粘贴到的位置,然后按ESC:set paste insert,然后按^shiftv

如果要剪切/粘贴,请使用ddp进行粘贴。您还可以使用d4d代替dd来剪切/粘贴4行。


2
你可以编写一个宏来将所有内容追加到末尾:
qdddGp<ctrl + o>jq

然后使用以下命令按需运行它多次(例如20次):

20@d

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