2009-09-29 212 views
7

多行字符串粘贴到GVIM当我从(例如)复制两行文本使用CTRL-V在Acrobat Reader开成GVIM一个PDF,文本被插入以上线在gvim在我的位置,而不是在我的光标是的位置。 (场景:我想复制一个分布在两行的文档标题并将其粘贴在gvim中的html标记之间)。在光标位置

如果我对单行文本执行相同操作,文本将正确粘贴在光标所在的位置。

我应该怎么做才能使它同时适用于两行文本(例如'粘贴不格式')?

重要提示:要粘贴的字符串由两个用回车符分隔的行组成(或类似的东西)!

解决方案

实际上,有两种有效的解决方案:使用CTRL-R *在光标位置粘贴(并保持剪贴板中的内容多行)

    • 重新映射粘贴命令以替换剪贴板中的所有回车符字符串
  • 回答

    9

    首先,它似乎CTRL-V被映射到一些事情,因为通常在VIM粘贴不使用完成CTRL-V(CTRL-V是可视块)。

    第二你看到的行为是标准VI [M]的行为,如果你拔一个或多个完整线,粘贴将总是导致在一个或多个线的电流线的上方或下方。

    我不知道任何内置的方式来达到你正在尝试做的。但你总是可以重新映射CTRL-V以你想要的东西是什么,它做什么,即

    :map <C-V> i<CR><Esc>"*P 
    

    是粘贴多行后,将是你的光标是在字符之间,但这种重映射可能不是你想要什么其他情况。

    编辑

    OK,我找到了另一种方式。

    当在插入模式,键入

    CTRL-R * 
    

    这将粘贴在光标是在该位置的剪贴板缓冲区的内容。如果你想从它粘贴前剥离从寄存器换行(您也可以使用此粘贴其他缓冲区的内容)

    +0

    啊,终于有人明白我的问题:-)我看你在做什么,它确实只是一个半工作的解决方法。奇怪的是,vim无法处理这个问题在没有办法在粘贴到VIM之前删除缓冲区(剪贴板)中的回车符? (顺便说一句:非标准的CTRL-V快捷键在这里不是问题) – Rabarberski 2009-09-29 13:26:00

    +1

    啊,你的CTRL-R !*更新是做什么的对我来说 – Rabarberski 2009-09-30 07:39:35

    1

    使用快捷方式pP(分别在光标之前和之后粘贴)。添加"*来指定系统寄存器的内容(Windows剪贴板,在你的情况下)或"+(对于UNIX)。

    所以,你可以使用:

    • "*p光标前粘贴
    • 粘贴后
    • "*P光标
    • "*y副本(可视面积,或者需要 后缀告诉Vim的 “什么” 复制)
    • "*d切(可视区域,或用 后缀)

    等等。

    +0

    P和P膏从VIM缓冲区,而不是从Windows剪贴板中,这样就不会在错过了部分修改补充信息这种情况下 – Rabarberski 2009-09-29 08:13:35

    +0

    工作。 – 2009-09-29 08:18:13

    +0

    嗯,感谢您的提示,但仍然无法正常工作。它被粘贴以上,其中我所在行,而不是在光标位置 – Rabarberski 2009-09-29 08:27:50

    1

    要从光标位置的windows剪贴板中粘贴到gVim中,请使用

    "+gP
    请不要忘记双引号。

    +0

    的问题并不是如何粘贴,而是如何在给定的剪贴板内容光标粘贴包含两行(由回车分隔) – Rabarberski 2009-09-29 11:58:39

    +0

    我相信我明白你的问题。你是说你试过“+ GP和没有工作?它确实对我来说。我 – 2009-09-29 17:41:44

    +0

    已经更新了我的反应,使其直接回答你的问题。 – 2009-09-29 17:45:48

    1
    :set paste 
    

    ,然后粘贴的东西进入缓冲

    :set nopaste 
    

    恢复格式化设置

    +0

    不错的尝试,但对我不起作用。该2行仍然被粘贴在当前行上面 – Rabarberski 2009-09-29 11:57:33

    2

    ,您可以使用表达式寄存器"=

    :map <C-v> "=substitute(@*, "\n", " ", "g")<CR>p 
    
    +0

    非常漂亮的提示我花了一些尝试,以实现这仅适用于在不插入模式,但我可以用:!IMAP在那里它映射以及感谢 – Rabarberski 2009-09-30 07:38:41

    +0

    小更新:我已经改变了你的解决方案,在映射命令的末尾使用P而不是p。这粘贴在光标后面,这对我来说更自然。 – Rabarberski 2009-09-30 07:42:35