0

我在 vim 中得到了一段长度不同的 3 行文本。我从外部应用程序(如 word 或记事本)中获得了另外 3 行的数据块,我想将其附加并粘贴到所有这 3 行上。我发现了一些关于这个问题的帖子https://superuser.com/questions/300362/vim-how-to-paste-a-block-of-text-at-the-end-of-multiple-lines剪切和粘贴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

结果

4

3 回答 3

2

在 Vim 中,抽出的文本可以是三种类型:“按字符”、“按行”或“按块”。虽然使用 Vimscript 可以更改寄存器内容的类型,但它肯定不是很实用(:help setreg())。

最简单的方法是:

  • 将这些评论粘贴到原始数据上方或下方的某个位置
  • 点击<C-v>进入视觉块模式并选择该评论块
  • 点击d删除它
  • 将光标移动到原始数据的第一行
  • 点击p粘贴“blockwise”
于 2013-05-30T14:04:18.550 回答
1

你可以使用我的UnconditionalPaste 插件。它提供了一个gbp映射,强制粘贴是块状的,无论寄存器被拉出的模式如何。(它还有其他相关的按字符和按行粘贴的映射,等等!)

使用它,将光标定位在第一行的末尾,然后使用"+gbp.

于 2013-05-30T13:57:44.173 回答
0

这是我会做的事情(<CR>= Enter Key, <ctrl-v>control+v):

e: external_application.c<CR>
<ctrl-v>G$"py
e original_data.c<CR>
gg$"pp
于 2013-05-31T02:23:13.230 回答