Comment ajoute-t-on au registre du presse-papiers dans vim?

21

Je sais déjà que vous pouvez copier quelque chose dans le registre en utilisant: (plus une commande yank, delete, etc.)

"a

Je comprends également que vous pouvez ajouter à un registre en utilisant:

"A

De plus, je comprends comment copier quelque chose dans le presse-papiers en utilisant:

"+

Que dois-je taper pour ajouter au registre du presse-papiers?

Ma version vim:

VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Jan 2 2014 19:39:59) Huge version with GTK2 GUI.
Jason Basanese
la source

Réponses:

10

Il n'y a pas de commande de mode normal pour cela, mais vous pouvez simplement ajouter à un autre registre et :letle registre du presse-papiers au contenu de ce registre:

"Ay
"Ay
"Ay
:let @+ = @A
romainl
la source
1
Dois-je mettre cela dans mon fichier .vimrc?
Jason Basanese
3
Veuillez noter que let @+ = @Ale type de registre est rejeté a. La bonne façon de copier des registres est quelque chose comme ceci: call setreg('+', getreg('a', 1, 1), getregtype('a')).
Sato Katsura
//, Est-ce que cela s'ajoute réellement ?
Nathan Basanese
//, Pourquoi listez-vous trois "Aycommandes?
Nathan Basanese
Cela aurait pu être quatre ou douze. Juste un exemple.
romainl
7

Vous pouvez appeler setreg('+', lines, 'a'), mais pour autant que je sache, il n'y a aucun moyen de le faire avec des commandes en mode normal. Vous devez utiliser l'un des registres de lettres majuscules pour cela.

lcd047
la source
Le simple fait d'utiliser :let @+ .= 'XXX'semble fonctionner?
Martin Tournoij
7
@Carpetsmoker Oui et non. Il y a eu une discussion récente à ce sujet sur vim_dev et apparemment, vous n'êtes pas censé le faire, même si cela peut sembler fonctionner sous certaines conditions. Je suppose que cela a à voir avec le contenu du registre ayant un type (caractère / ligne / bloc) et la concaténation de chaîne ne faisant pas la comptabilité nécessaire. Cela ne fait aucune différence de toute façon, ce n'est toujours pas une commande en mode normal.
lcd047