Vim:用默认缓冲区替换选择而不覆盖缓冲区

时间:2010-10-01 09:05:14

标签: vim replace buffer yank

这是我的问题:

我处于视觉模式。

我选择文本并将其复制到缓冲区。 ((y)的ANK)

我选择了另一个要替换的文本并粘贴缓冲区。 ((P)ASTE)

现在缓冲区中已经替换了第二个选择,但我希望第一个选择仍然在那里。

有什么想法吗?

2 个答案:

答案 0 :(得分:25)

通常,这种行为很有用。如果你不想要它,你可以改为做通常的猛拉,然后粘贴(正式,'put') 0 p 你可以多次这样做。

有关详情,请参阅:help v_p

如果要避免覆盖,则需要先删除。您可以使用"_选择黑洞缓冲区,然后删除d,然后在P之前粘贴,您将避免设置缓冲区。

答案 1 :(得分:0)

虽然从技术上讲这不能回答问题(不使用默认缓冲区),但确实可以解决问题的症状,所以我想我还是会分享。我通过解决其他问题来解决此问题。

我已将系统剪贴板中的“复制,粘贴”(拉,放)映射到“ Ctrl-Shift-C,Ctrl-Shift-V”(Ctrl-C,Ctrl-V(如果大写锁定处于打开状态))。可以代替y使用,效果相同。

如果使用系统缓冲区进行复制,则粘贴时不会被覆盖。

我将此添加到了.vimrc

vnoremap <C-V> "*p 
vnoremap <C-C> "*y

作为奖励,它使您可以轻松访问系统剪贴板。