¿Cómo uso los registros vim?

Resuelto vehomzzz asked hace 14 años • 17 respuestas

Solo conozco una instancia que usa registros mediante CtrlR*la cual pego texto desde un portapapeles.

¿Cuáles son otros usos de los registros? ¿Cómo usarlos?

Todo lo que sabe sobre los registros VI (centrémonos en vi 7.2): compártalo con nosotros.

vehomzzz avatar Sep 30 '09 20:09 vehomzzz
Aceptado

Los registros en Vim le permiten ejecutar acciones o comandos en el texto almacenado en ellos. Para acceder a un registro, se escribe "aantes de un comando, donde aestá el nombre de un registro. Si desea copiar la línea actual en el registro k, puede escribir

"kyy

O puede agregar a un registro usando una letra mayúscula

"Kyy

Luego puede moverse por el documento y pegarlo en otro lugar usando

"kp

Para pegar desde el portapapeles del sistema en Linux

"+p

Para pegar desde el portapapeles del sistema en Windows (o desde el portapapeles "resaltado con el mouse" en Linux)

"*p

Para acceder a todos los registros definidos actualmente, escriba

:reg
FModa3 avatar Sep 30 '2009 13:09 FModa3

Me alegré cuando descubrí el 0registro. Si extrae texto sin asignarlo a un registro en particular, se asignará al 0registro y se guardará en el "registro predeterminado. La diferencia entre los registros 0y es que solo se completa con texto extraído, mientras que el registro predeterminado también se completa con texto eliminado usando los comandos / / / / / / / ."0dDxXcCsS

Esto me resulta útil cuando quiero copiar algún texto, eliminar algo y reemplazarlo con el texto copiado. Los siguientes pasos ilustran un ejemplo:

  • Arranque el texto que desea copiar y[motion]: este texto se guarda "y 0se registra
  • Elimine el texto que desea reemplazar d[motion]; este texto se guarda en "el registro.
  • Pegue el texto arrancado con"0p

¿Dónde "está el comando para usar un registro para el siguiente comando?

En el paso final, si pegara desde el registro predeterminado (con p), usaría el texto que acaba de eliminar (probablemente no sea el que pretendía).

Tenga en cuenta que po Ppega desde el registro predeterminado. El equivalente a mano sería ""p(o ""P) y "0mantiene el último tirón, "1mantiene la última eliminación o cambio.

Para más información ver :help registers.

nelstrom avatar Oct 01 '2009 14:10 nelstrom

¡Una de mis partes favoritas de los registros es usarlos como macros!

Digamos que está tratando con un archivo de valores delimitados por tabulaciones como tal:

ID  Df  %Dev    Lambda
1   0   0.000000    0.313682
2   1   0.023113    0.304332
3   1   0.044869    0.295261
4   1   0.065347    0.286460
5   1   0.084623    0.277922
6   1   0.102767    0.269638
7   1   0.119845    0.261601

Ahora decide que necesita agregar un signo de porcentaje al final del campo %Dev (comenzando desde la segunda línea). Crearemos una macro simple en el mregistro (seleccionado arbitrariamente) de la siguiente manera:

  1. Presione: qm: Para comenzar a grabar la macro en el mregistro.

  2. EE: Vaya al final de la tercera columna.

  3. a: Modo de inserción para agregar al final de esta columna.

  4. %: Escriba el signo de porcentaje que queremos agregar.

  5. <ESC>: Vuelve al modo comando.

  6. j0: Ir al principio de la siguiente línea.

  7. q: Detener la grabación de macro

Ahora podemos simplemente escribir @mpara ejecutar esta macro en la línea actual. Además, podemos escribir @@para repetir, ¡o 100@mhacer esto 100 veces! La vida pinta bastante bien.

Llegados a este punto deberíamos preguntarnos: "¿Pero qué tiene esto que ver con los registros?"

Excelente punto. Investiguemos qué hay en el contenido del mregistro escribiendo "mp. Luego obtenemos lo siguiente:

EEa%<ESC>j0

Al principio, parece que accidentalmente abriste un archivo binario en el bloc de notas, pero al mirarlo mejor, ¡ es la secuencia exacta de caracteres en nuestra macro!

Eres una persona curiosa, así que hagamos algo interesante y editemos esta línea de texto para insertar un !antiguo y aburrido %.

EEa!<ESC>j0

Luego, introduzcamos esto en el nregistro escribiendo B"nyE. Luego, solo por diversión, ejecutemos la nmacro en una línea de nuestros datos usando @n....

Agregó un !.

Básicamente, ejecutar una macro es como presionar la secuencia exacta de teclas en el registro de esa macro. Si ese no es un buen truco de registro, me comeré mi sombrero.

Francisco avatar Aug 10 '2011 22:08 Francisco