2016-06-20 1 views
2

Pour mettre en œuvre coller une seule fois que je peux utiliser:Vim « coller une fois » sans mise à jour undo

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

Ce registre efface après le collage, de sorte que la pâte suivante ne fonctionnera pas. Ce qui arrivera cependant est le collage vide qui met à jour les défaites. Si vous appuyez sur p 3 fois, vous devrez annuler les appels 3 pour annuler la pâte initiale.

Comment supprimer ceci? J'ai essayé quelque chose comme:

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

Mais cela n'impose aucun changement.

Répondre

4

Celui-ci travaille pour moi:

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

Pour être un peu plus court:

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

premier fonctionne, merci! Le second n'est cependant pas –

+0

Étrange, les deux travaillent pour moi; J'utilise souvent 'qXq' pour vider tout reg X, et ça marche aussi avec le reg' '@ '' (je l'ai découvert en répondant à votre question) ... sans problème, ce n'est pas un problème si le 1er fonctionne! – yolenoyer

+0

Vérifié que ça fonctionne vraiment quand on le colle dans Vim, mais pas quand on le met dans mon plugin et ça fonctionne –