我在vim中有一个文本块,有3行不同长度。我从外部应用程序(如word或记事本)获得另外3行数据,我想将其粘贴到所有这3行中。我在这个问题https://superuser.com/questions/300362/vim-how-to-paste-a-block-of-text-at-the-end-of-multiple-lines和cut and paste multiple lines in vim(还有Paste multiple times)上发现了一些帖子,但这些内容最初只是在内容最初是从vim中删除时才有效。 clipboard=unnamed
已设置。
这是我想要实现的一个例子(从第一篇文章中窃取;-D):
//Comment1
//Comment2
//Comment3
来自外部应用程序的数据块
foo = 1;
bar = 2;
baz = 3;
原始数据
foo = 1; //Comment1
bar = 2; //Comment2
baz = 3; //Comment3
结果
答案 0 :(得分:2)
在Vim中,抽出的文本可以有三种:“字符”,“行”或“块状”。虽然Vimscript可以更改寄存器内容的类型,但它确实不太实用(:help setreg()
)。
最简单的是:
<C-v>
进入视觉模式并选择该评论栏d
将其删除p
以粘贴“blockwise”答案 1 :(得分:1)
您可以使用我的UnconditionalPaste plugin。它提供gbp
映射,强制粘贴 blockwise ,无论寄存器被拉出的模式如何。 (它还有其他关于字符和线性粘贴的相关映射,以及更多!)
使用它,将光标定位在第一行的末尾,然后使用"+gbp
。
答案 2 :(得分:0)
这是我要做的事情(<CR>
=输入密钥,<ctrl-v>
控制+ v):
e: external_application.c<CR>
<ctrl-v>G$"py
e original_data.c<CR>
gg$"pp