¿Cómo se agrega al registro del portapapeles en vim?

21

Ya sé que puede copiar algo en el registro utilizando: (más un comando de extracción, eliminación, etc.)

"a

También entiendo que puede agregar un registro usando:

"A

Además, entiendo cómo copiar algo al registro del portapapeles usando:

"+

¿Qué escribo para agregar al registro del portapapeles?

Mi versión vim:

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

Respuestas:

10

No hay un comando de modo normal para eso, pero puede simplemente agregar a otro registro y :letel registro del portapapeles al contenido de ese registro:

"Ay
"Ay
"Ay
:let @+ = @A
romainl
fuente
1
¿Pondría ese let en mi archivo .vimrc?
Jason Basanese
3
Tenga en cuenta que let @+ = @Adescarta el tipo de registro a. La forma correcta para copiar registros es algo como esto: call setreg('+', getreg('a', 1, 1), getregtype('a')).
Sato Katsura
// ¿Esto realmente se agrega ?
Nathan Basanese
//, ¿Por qué enumeras tres "Aycomandos?
Nathan Basanese
Podrían haber sido cuatro o doce. Solo un ejemplo.
romainl
7

Puede llamar setreg('+', lines, 'a'), pero por lo que puedo decir, no hay forma de hacerlo con los comandos de modo normal. Tienes que usar uno de los registros de letras mayúsculas para eso.

lcd047
fuente
¿Solo usar :let @+ .= 'XXX'parece funcionar?
Martin Tournoij
77
@Carpetsmoker Sí y no. Ha habido una discusión reciente al respecto en vim_dev y aparentemente no se supone que hagas eso, aunque parezca que funciona bajo ciertas condiciones. Supongo que tiene que ver con el contenido del registro que tiene un tipo (carácter / línea / bloque) y la concatenación de cadenas no realiza la contabilidad necesaria. De todos modos, no hace ninguna diferencia, todavía no es un comando de modo normal.
lcd047