Vim:如何在多行末尾粘贴一段文本?

Tim*_*Tim 40 vim paste text-manipulation

假设我有一个这样的文本块:

// 评论 1
// 评论 2
// 评论 3

我想将这些行中的每一行附加到 3 个相应代码行的末尾:

富 = 1;
酒吧 = 2;
巴兹 = 3;

所以最终的结果是

富 = 1; // 评论 1
酒吧 = 2; // 评论 2
巴兹 = 3; // 评论 3

在 Vim 中有没有一种简单的方法可以做到这一点?

小智 41

使用可视块模式(Ctrl+ v),以选择一组线,然后要么yd它们。

然后,如果您选择了 foo, bar, baz 行再次使用可视块模式选择注释行的第一列,然后将它们Shift+p到位(或者如果您选择了注释行,则选择 foo bar baz 的最后一列线和p他们到位。

掌握定位的窍门可能需要一些练习,但是当你掌握了诀窍时,你就会飞起来。当您选择了一个块时,您还可以使用Shift+A将例如空格附加到块(附加时,新文本只会出现在顶行,但是当您按 esc 时,它会神奇地出现在所有选定的行中) . 类似地,Shift+i将在每行所选块的开头执行相同的操作。

不过,您之后需要清理空行。

还有一个很棒的 vimcasts 插曲,更详细地展示了这些技术。

  • 由于某些奇怪的原因,这对我不起作用。我的 vim 仍然会像我在粘贴时使用可视行模式一样(添加换行符等) (3认同)
  • 请注意换行符,并确保使用“可视块”(Ctrl+v) 选择要复制到第一个块的第二个块。如果使用“视觉线”(Shift+v) 复制第二个块,它也会复制“行尾”字符。 (2认同)