如何在vim中阻塞(列?)粘贴

时间:2010-03-04 09:12:40

标签: vim

如何在多行上粘贴东西?

我正在努力达到以下目的: 在现有文本中,我可以< C-v> jjjjj< S-I> HelloWorld< CR> 将HelloWorld插入5行

但我没有输入HelloWorld,而是想从寄存器中获取文本。 我想首先猛拉HelloWorld,然后将它插入5行。

3 个答案:

答案 0 :(得分:20)

当您处于插入模式时,可以按Ctrl-R,然后按下要粘贴的缓冲区的字母。然后像往常一样按Escape,它将正常插入块。

答案 1 :(得分:6)

假设您在vim缓冲区中有以下内容:

1|  Do the dishes
2|  Get milk
3|  Take out the trash

并且您希望在每行的开头插入[ ],以便它变为:

1|  [ ] Do the dishes
2|  [ ] Get milk
3|  [ ] Take out the trash

  1. 转到第一行的第一列
  2. CTRL + V(区块选择)
  3. j两次(到第三行)。现在选择第一,第二和第三列的第一列
  4. I(shift + i - capital“i”) - 这是“阻止插入模式”
  5. 输入[ ]
  6. esc(转义)
  7. 文本将插入每行

答案 2 :(得分:3)

您可以使用宏来执行此操作,例如qq0Pjq4@q

qq启动一个名为q

的宏

0转到该行的开头,P在光标前粘贴已拉出的内容

j向下移动一行,q结束宏

4@q重复q宏4次