如何在Vim中的不同列文本之后粘贴一列文本?

如何在Vim中的不同列文本之后粘贴一列文本?

问题描述:

我有两列充满了文字,我想让他们并排。例如,我有如何在Vim中的不同列文本之后粘贴一列文本?

abc 
def 
ghi 

123 
456 
789 

,我想

123 abc 
456 def 
789 ghi 

所有我能找到的是如何将同一线粘贴到每行的末尾一列。我无法弄清楚如何在另一列的末尾粘贴多行文本块。

使用可视块(ctrl-v)剪切字母列。然后移至号码列的第一行。移动到最后并创造一个空间。然后粘贴字母列。

+0

在视觉模块模式下切割/切割有什么特别之处吗?我现在的问题是我使用的寄存器实际上是'*'寄存器,这意味着系统剪贴板。 – 2012-02-02 22:04:51

+1

如果你没有用'''指定一个特殊的''',那么相同的寄存器被用于简单的'y'和'p'。 – Matej 2012-02-02 22:08:12

+1

当我想要“投”一个粘贴时,Ingo Karkat很有帮助。 http://www.vim.org/scripts/script.php?script_id=3355 – 2012-02-02 22:08:59

您有:

abc 
def 
ghi 

123 
456 
789 

将光标移动到a。然后CTRL+V,并将光标移动到i。按y

接下来,在3字符后面加一个空格,然后按p

完成。

我想知道为什么“视觉模块模式”不适合我。关键是yank(或删除)在视觉模式。

我发现自己需要从excel列中复制一些具有可变长度的东西。我是这样做的:

Names 
Donald Knuth 
Sebastian Thrun 
Peter Norvig 
Satoshi Nakamoto 

Age 
100 
50 
60 
45 

假设你想把第二列放在第一列之后。

  1. 猛拉它在视觉模式:
    • 移动光标至Age
    • Ctrl + v开始在45
    • y进入可视化模式
    • 将光标移动到5猛拉(或d删除)

你现在已经在视觉模式下被抽出。

  1. 粘贴(在正常模式下)

    • 移动到第一行的末尾,并添加更多的空间,因为它比例如第二线短。如果您在不添加额外空格的情况下粘贴“块”,它将覆盖Sebastian Thrun中的“运行”。

    • 现在你在第一行,在最后一个字符后面插入一些空格。确保您未处于插入模式,并点击p粘贴该块。 (如果你想在插入模式粘贴,使用ctrl+r "

  2. enter image description here

开始=“2”>
+0

@Ado:谢谢,这帮助了我。但是,虽然正常模式下的粘贴按预期工作,但用'ctrl + r''插入不起作用,应该是这样吗? – Xiphias 2016-07-19 10:03:38

+0

@Xhihias输入':registers',看看你有什么。在'''下面有一些东西,你可能正在输入'ctrl + r''(确保你正在保持转换) – Abdo 2016-07-19 12:33:22

+0

实际上,它被称为“可视块模式”,而不仅仅是“可视模式”。 – Fritz 2017-04-19 17:05:42

这似乎是显而易见的,但如果你是从外部复制缓冲区粘贴不会只是视觉工作模式粘贴。你可以做的是首先使用上述方法在空白区域垂直剪切/粘贴。

如果你想手动设置寄存器类型说按块,使用此

:call setreg(0, getreg(0), 'b') 

:call setreg('*', getreg('*'), 'b') 

有用的从电子表格编辑器中粘贴列。

有关详细信息,请参阅:help setregvimtip