Vim "粘贴一次" 但不更新撤销操作

3

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

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

这会在粘贴后清除寄存器,所以下一次粘贴将不起作用。然而,会发生空白粘贴,更新撤消。因此,按下p键3次将需要3个撤消调用来撤消初始粘贴。

如何禁止这种情况?我尝试了以下内容:

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

但它并不强制任何改变。
1个回答

4
这个对我有效:
:noremap <silent> <expr> p @" != "" ? 'p:let @"=""<cr>' : ""

简单来说:

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

奇怪,两个都对我有效;我经常使用 qXq 来清空任何 X 寄存器,并且它也适用于 @" 寄存器(我通过回答你的问题发现了这一点)... 无论如何,如果第一个有效那也不是问题! - yolenoyer
已经检查过,当粘贴到 Vim 中时确实可以工作,但是放入我的插件并以那种方式运行时却不行。 - Rob Luca

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接