我偶尔会在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
当然不像这个例子那么简单。这些块可能有更多的内容,更大和不一致的行数等。
我现在这样做的方式似乎有点像黑客:
CTRL-q
选择左上角
d
切断街区。SHIFT+p
将块粘贴到此区域。步骤是粗略的部分。
执行正常的非块剪切或复制将始终粘贴到“新”行。一种“插入”或“追加”操作。执行块剪切或复制通常会以某种“覆盖”模式粘贴。
有没有更好的方法来复制或切入“阻止模式”,但粘贴在“插入/追加模式”中?
答案 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 )命令会将寄存器内容粘贴为新行,无论它们是如何被拉出的(例如以块状模式) )。
它还有一些其他有用的命令会影响寄存器的粘贴方式。