cómo agregar líneas a un registro vim sin sobrescribirlo

85

Me gustaría tirar de una línea en un registro: "{register}ypero sin sobrescribir lo que estaba anteriormente en el registro. A menudo necesito copiar líneas no contiguas en un registro, y a veces me gustaría usar los registros como una pila.

Ejemplo:

line1
line2
line3

Quiero copiar line1, colocando el cursor sobre él e ingresando "ay, luego continúo line3y hago "ay. Entonces, cuando lo haga "ap, AMBOS line1Y line3serán pegados.

¿Es esto posible sin complementos? con complementos?

Mapad
fuente
Excelente para hacer una lista rápida de definiciones en la parte superior del archivo.
Joe McGrath

Respuestas:

132

Si desea agregar a un registro con nombre, use su carácter en mayúscula correspondiente. es decir, en tu ejemplo:

"ayy
"Ayy
"ap
MarkB
fuente
11
¿Hay alguna forma posible de agregar un registro sin nombre? (el principal)
Zaffy
Para ahorrarle a la gente una visita a la página ^^, IMO es más fácil usar el registro con nombre. Cuando escribe "un pensamiento, 'usando el registro a ...'" A 'que se agrega para registrar un'
Rob Kielty
12

Solo para ampliar la respuesta de MarkB, ¿sabía que también puede usar marcadores para seleccionar un bloque de texto para su tirón?

Vaya a la primera línea del bloque que desea tirar e ingrese el comando de marca después de seleccionar una letra como marcador, por ejemplo

ma  (entered in command mode, i.e. no colon)

luego vaya a la parte inferior del bloque que desea tirar e ingrese el comando:

:'a,.ya A

este comando significa tomar el bloque de texto de la línea que contiene mi marcador llamado a hasta la línea actual y colocarlo en el búfer a. Se aplican las mismas reglas que las mencionadas por MarkB, use el nombre del búfer en minúsculas para sobrescribir el búfer. Utilice el nombre del búfer en mayúsculas para agregar al búfer. Entonces, en este caso, esto se agregará al contenido del búfer a.

NB La 'a' utilizada para su marcador no tiene nada que ver con la 'a' utilizada para seleccionar su registro. (AFAIK pero YMMV)

Por cierto, 'a (apóstrofe a) se refiere a la línea que contiene el marcador a. `a (comilla inversa a) se refiere al carácter debajo del cursor cuando ingresó ma.

`ad`b (also entered in command mode)

es útil porque borrará el texto entre el carácter marcado con el marcador a hasta el carácter justo antes del carácter que ha marcado con el marcador b.

Rob Wells
fuente
'a, .ya A funciona, pero cuando intento con la marca delante de un -> `a dice: E492: No es un comando de editor:` a, .ya A. Hubiera ayudado simplemente no usar una letra other que una para el marcador en el ejemplo, por lo que está claro qué letra es qué cosa :)
justin w