gvim粘贴在外部应用程序的多行上

时间:2013-05-30 13:42:41

标签: vim blocking paste

我在vim中有一个文本块,有3行不同长度。我从外部应用程序(如word或记事本)获得另外3行数据,我想将其粘贴到所有这3行中。我在这个问题https://superuser.com/questions/300362/vim-how-to-paste-a-block-of-text-at-the-end-of-multiple-linescut 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

结果

3 个答案:

答案 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