Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Vim "paste once" without update of undo

To implement pasting only once I can use:

noremap <silent> p p:let @"=""<cr>

This clears register after pasting, so that following paste will not work. What will however happen is empty pasting which updates undo. So pressing p 3 times will require 3 undo calls to undo the initial paste.

How to suppress this? I tried something like:

:noremap <expr> @" != "" ? p:let @"="" : <Nop> <cr>

But it doesn't impose any change.

like image 964
Rob Luca Avatar asked Feb 01 '26 23:02

Rob Luca


1 Answers

This one is working for me:

:noremap <silent> <expr> p @" != "" ? 'p:let @"=""<cr>' : ""

To be a bit shorter:

:noremap <silent> <expr> p @" != "" ? 'pq"q' : ""
like image 168
yolenoyer Avatar answered Feb 04 '26 13:02

yolenoyer