2008-12-19 13 views
72

Me gustaría marcar una línea en un registro: "{register}y pero sin sobreescribir lo que estaba previamente en el registro. A menudo necesito copiar líneas no contiguas en un registro, y me gustaría utilizar a veces los registros como una pila.cómo agregar líneas a un registro vim sin sobreescribirlo

Ejemplo:

line1 
line2 
line3 

quiero copiar line1, al poner el cursor sobre él y entrar en "ay, a continuación, pasando line3 y hacer "ay. Luego, cuando haga "ap, se pegarán AMBOS line1 Y line3.

¿Esto es posible sin complementos? con complementos?

+0

Ideal para hacer una lista rápida de definiciones en la parte superior del archivo. –

Respuesta

110

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

 
"ayy 
"Ayy 
"ap 
+8

¿Hay alguna manera posible de anexar un registro sin nombre? (el principal) – Zaffy

+3

@Zaffy http://stackoverflow.com/questions/18536511/vim-how-to-append-yanked-text-to-unnamed-register – PonyEars

11

Sólo para ampliar la respuesta del MarkB, ¿sabías que también puede utilizar marcadores para seleccionar un bloque de texto para su tirón?

Vaya a la primera línea del bloque que desea extraer e ingrese el comando de marca luego de seleccionar una letra como marcador, p.

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

luego ir a la parte inferior del bloque que desea dar un tirón y escriba el comando:

:'a,.ya A 

este comando medios toman el bloque de texto de la línea que contiene mi marcador llamado hasta el línea actual y tírela al búfer a. Las mismas reglas que MarkB mencionó se aplican, use el nombre del buffer en minúsculas para sobrescribir el búfer. Use el nombre del búfer en mayúsculas para agregarlo al búfer. Entonces, en este caso, esto se agregará al contenido del búfer a.

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

BTW 'a (apóstrofo a) se refiere a la línea que contiene el marcador a. `a (cita inversa a) se refiere al personaje debajo del cursor cuando ingresaste ma.

`ad`b (also entered in command mode) 

es útil porque va a eliminar el texto entre el carácter marcado con el marcador hasta un personaje justo antes de el personaje que ha marcado con un marcador b.

+0

'a, .ya A funciona, pero cuando intento con la marca al frente de un -> \ 'a dice: E492: No es un comando del editor: \' a, .ya A. Habría ayudado simplemente no usar una letra que no sea una para el marcador en el ejemplo por lo que está claro qué letra es qué cosa :) –

Cuestiones relacionadas