在Vim中,如何在块模式下切换但在正常模式下粘贴,插入新行?

时间:2014-02-13 10:40:38

标签: vim copy-paste

我偶尔会在Vim中遇到这种类型的编辑问题。

我在表格中有文字格式,我想把它变成一个列表。

在:

AAA BBB
AAA BBB
AAA BBB

CCC DDD
CCC DDD
CCC DDD

后:

AAA
AAA
AAA

BBB
BBB
BBB

CCC
CCC
CCC

DDD
DDD
DDD

当然不像这个例子那么简单。这些块可能有更多的内容,更大和不一致的行数等。

我现在这样做的方式似乎有点像黑客:

  1. 在块模式下从右列中选择一个块: Windows版本中的CTRL-q选择左上角 d切断街区。
  2. 注意块中有多少行,然后手动添加许多空行。
  3. 转到我创建的新空白区域的左上角。 SHIFT+p将块粘贴到此区域。
  4. 步骤是粗略的部分。

    执行正常的非块剪切或复制将始终粘贴到“新”行。一种“插入”或“追加”操作。执行块剪切或复制通常会以某种“覆盖”模式粘贴。

    有没有更好的方法来复制或切入“阻止模式”,但粘贴在“插入/追加模式”中?

3 个答案:

答案 0 :(得分:6)

ex command :put将始终粘贴注册行。

使用视觉模式切割文本块,然后执行:put而不是p

如果您想以更多方式“施放”贴纸,请使用@Ingo Karkat的插件。

有关详细信息,请参阅:

:h pu

答案 1 :(得分:2)

你可以按照你的方式阻止明智地选择BBB部分,例如,在被d剪切之后,你运行这个命令:

call setreg('"',@",'V')

然后你可以粘贴到目标线上,它会将你的块状“猛拉”变成直线。

如果您确实需要经常这样做,可以创建映射。

答案 2 :(得分:1)

我的UnconditionalPaste plugin有一个glp go linewise paste )命令会将寄存器内容粘贴为新行,无论它们是如何被拉出的(例如以块状模式) )。

它还有一些其他有用的命令会影响寄存器的粘贴方式。