¿Cómo uso los registros vim?
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.
Los registros en Vim le permiten ejecutar acciones o comandos en el texto almacenado en ellos. Para acceder a un registro, se escribe "a
antes de un comando, donde a
está 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
Me alegré cuando descubrí el 0
registro. Si extrae texto sin asignarlo a un registro en particular, se asignará al 0
registro y se guardará en el "
registro predeterminado. La diferencia entre los registros 0
y es que solo se completa con texto extraído, mientras que el registro predeterminado también se completa con texto eliminado usando los comandos / / / / / / / ."
0
d
D
x
X
c
C
s
S
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"
y0
se 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 p
o P
pega desde el registro predeterminado. El equivalente a mano sería ""p
(o ""P
) y "0
mantiene el último tirón, "1
mantiene la última eliminación o cambio.
Para más información ver :help registers
.
¡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 m
registro (seleccionado arbitrariamente) de la siguiente manera:
Presione:
qm
: Para comenzar a grabar la macro en elm
registro.EE
: Vaya al final de la tercera columna.a
: Modo de inserción para agregar al final de esta columna.%
: Escriba el signo de porcentaje que queremos agregar.<ESC>
: Vuelve al modo comando.j0
: Ir al principio de la siguiente línea.q
: Detener la grabación de macro
Ahora podemos simplemente escribir @m
para ejecutar esta macro en la línea actual. Además, podemos escribir @@
para repetir, ¡o 100@m
hacer 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 m
registro 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 n
registro escribiendo B"nyE
. Luego, solo por diversión, ejecutemos la n
macro 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.