在Vim中以列模式插入多行文本

时间:2018-01-25 13:03:52

标签: vim

我想在列模式下将从电子表格复制的文本列插入到文本文件中,以便我可以直观地比较两个结果。 例如,如果我有一个像:

这样的文件
status = 1
status = 0
status = 2
status = 4

我想插入参考结果

1
-1
2
4

所以我得到:

status = 1  1
status = 0  -1
status = 2  2
status = 4  4

可以吗?

2 个答案:

答案 0 :(得分:4)

视觉块是要走的路,但你必须做一些技巧。您从电子表格复制了文本(列),这意味着您在vim的+寄存器中有许多换行符。 regtype为V:linewise。

您有两种方法可以实现您的目标:

方式1:首先"+p,将列粘贴到vim,然后使用visual-block(ctrl-v)选择并再次将其拉出,并在视觉块选择中粘贴到目的地。 / p>

方式2:调用:call setreg('+',@+,'b')将regtype更改为block-wise。然后你可以粘贴在visal-block模式。

我更喜欢方式2.

答案 1 :(得分:3)

是的,使用视觉模式。 它可能不是最佳解决方案,但您可以执行以下操作:

转到status = 1行上的最后一个字符,启动视觉区<C-v>标记所有4行(3j),按<S-a>并按空格键两次。现在你有:

 status = 1~~
 status = 0~~
 status = 2~~
 status = 4~~

~表示在这里尾随空格)。 立即复制要以可视方框模式插入的文本(<C-v>,标记所有内容,y)。 现在,使用可视块模式标记4个最右边的尾随空格(要复制到的位置),然后点击p