Vim: Replace selection with default buffer without overwriting the buffer

While this does not technically answer the question (not using default buffer) it does solve the symptom of the problem so I thought I would still share. I get around this issue with a solution to a different problem.

I have mapped "Copy, paste" (yank, put) from the system clipboard to "Ctrl-Shift-C, Ctrl-Shift-V" (Ctrl-C, Ctrl-V if caps lock is on). This can be used in place of y with the same effect.

If I use the system buffer for copy it does not get overwritten when I paste.

I added this to my .vimrc

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

As a bonus it will give you easy access to the system clipboard.


Often, this behavior is useful. When you don't want it, you can instead do the usual yank, then paste (officially, 'put') with "0p. You can do this however many times you like.

See :help v_p for more.

If you want to avoid the overwrite, you need to delete first. You can use "_ to select the blackhole buffer, then delete d, then paste before P and you'll avoid the buffer being set.