Vim "paste once" 不更新撤消

Vim "paste once" without update of undo

实现一次粘贴我可以使用:

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

粘贴后清空寄存器,后面的粘贴将无效。然而,将发生的是更新撤消的空粘贴。因此,按 p 3 次将需要 3 撤消调用以撤消初始粘贴。

如何抑制这个?我试过类似的东西:

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

但它并没有强加任何改变。

这个对我有用:

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

短一点:

:noremap <silent> <expr> p @" != "" ? 'pq"q' : ""