2014-02-13 64 views
7

我现在偶尔遇到Vim中这种类型的编辑问题。在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. 从块右列中选择一个块模式: CTRL-q在Windows版本中选择左上角。
    d切块。
  2. 请注意块中有多少行,然后手动添加多条空行。
  3. 转到我创建的新空白区域的左上角。 SHIFT+p将块粘贴到此区域。

步骤是粗略的部分。

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

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

回答

6

ex command:put将总是粘贴寄存器行明智。

用可视块模式剪切文本块,就像以前一样,然后执行:put而不是p

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

欲了解更多信息,请参阅:

:h pu 
+0

这看起来是最简洁的,并且对我所做的事情完美无缺。 – hippietrail

1

UnconditionalPaste pluginglp去面向行粘贴)命令,将粘贴寄存器的内容为新的生产线,不管他们是如何抽出(例如,在逐块模式)。

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

2

可以阻止明智选择BBB一部分,你是怎么做到,并通过d例如切断后,运行此命令:

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

,那么你可以粘贴到目标线,它会变成你的块“向下”逐行排列。

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

+0

是反向也可以? 'setr​​eg'很神秘。 – hippietrail

相关问题