2012-02-02 81 views

回答

38

使用可视块(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

14

您有:

abc 
def 
ghi 

123 
456 
789 

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

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

完成。

41

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

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

Names 
Donald Knuth 
Sebastian Thrun 
Peter Norvig 
Satoshi Nakamoto 

Age 
100 
50 
60 
45 

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

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

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

  • 粘贴(在正常模式下)

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

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

  • enter image description here

    +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

    2

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

    0

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

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

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

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

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