VIM-将多个文件中的行合并到单个文件中

VIM-将多个文件中的行合并到单个文件中,vim,Vim,我试图遍历我的缓冲区列表,从每个缓冲区中选择一行,并将它们全部连接到一个文件(或其他缓冲区)中。例如: 文件1 。。。 第2行 文件2 。。。 第2行 文件3 。。。 第2行 等等 全部分为: 我的文件 第2行(文件1) 第2行(文件2) 第2行(文件3) 我似乎无法让我的注册表正常工作,bufdo因为某种原因让我心痛 [澄清] 我希望可以使用bufdo遍历所有缓冲区,从每个缓冲区中拉出第二行,并将其附加到寄存器中 然后,在另一个文件上,只需将寄存器内容粘贴到其中(包含我所有缓冲区中的第二

我试图遍历我的缓冲区列表,从每个缓冲区中选择一行,并将它们全部连接到一个文件(或其他缓冲区)中。例如:

文件1

。。。 第2行

文件2

。。。 第2行

文件3

。。。 第2行

等等

全部分为:

我的文件

第2行(文件1)

第2行(文件2)

第2行(文件3)

我似乎无法让我的注册表正常工作,bufdo因为某种原因让我心痛

[澄清] 我希望可以使用bufdo遍历所有缓冲区,从每个缓冲区中拉出第二行,并将其附加到寄存器中


然后,在另一个文件上,只需将寄存器内容粘贴到其中(包含我所有缓冲区中的第二行)。

您应该可以通过以下方式完成此操作:

bufdo normal 2G"Ayy
它遍历缓冲区并在正常模式下运行给定的命令
2G
跳到相应的行,然后将Y拉入寄存器a,追加而不是覆盖(因为a是大写的)。开始之前,请确保寄存器a为空


如果您有窗口或选项卡而不是缓冲区,则可以使用
windo
tabdo

(1)您的问题不完整(您实际在做什么,您指的是“无法让我的寄存器工作”和“心痛”?),以及(2)当你可以使用普通*nix实用程序从每个文件中获取第二行时,为什么你必须在Vim中这样做?对不起,我应该澄清一下Win7上的.gVIM 7.3.46,因此无法访问任何普通*nix命令。只是想快速地从Vim中直接组合这些命令(我已经在处理其他事情了)。我希望我可以加载我的缓冲区,并将每个缓冲区的第二行拉入寄存器(附加),然后就可以将寄存器粘贴回我的文件中。啊,它正盯着我的脸。非常感谢!我从来不知道如何附加到寄存器中。谢谢!帕特你可以使用命令模式命令
:bufdo 2yank a
。@ZyX:没错!我倾向于回到
:normal
,因为很多东西很难得到在命令模式下完成。@Jefromi我倾向于做相反的事情并创建函数,因为正常模式命令有大量的副作用(触摸寄存器、跳转列表、重新映射、各种特殊标记)-当我写东西分享时。内部使用的解决方案较少受到限制,但我仍然永远不会忘记在正常和
nore
可能的情况下使用bang。