Solo sé que una instancia que usa registros es a través de la CtrlR*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): comparta con nosotros.
Respuestas:
Los registros en Vim le permiten ejecutar acciones o comandos en el texto almacenado en ellos. Para acceder a un registro, escriba
"a
antes de un comando, dondea
está el nombre de un registro. Si desea copiar la línea actual en el registrok
, puede escribirO puede agregar a un registro utilizando una letra mayúscula
Luego puede moverse por el documento y pegarlo en otro lugar usando
Para pegar desde el portapapeles del sistema en Linux
Para pegar desde el portapapeles del sistema en Windows (o desde el portapapeles "resaltar el mouse" en Linux)
Para acceder a todos los registros definidos actualmente, escriba
fuente
"+
es un registro especial que se refiere al portapapeles del sistema."*
; entonces el comando para copiar hasta el final del archivo se convierte"*yG
.*
es el portapapeles "resaltado del mouse" y+
es el portapapeles Ctrl-XCV.+
)?Estaba contento cuando descubrí el
0
registro. Si tira de texto sin asignarlo a un registro en particular, se asignará al0
registro y se guardará en el"
registro predeterminado . La diferencia entre los registros0
y"
es que0
solo se rellena con texto arrancado, mientras que el registro predeterminado también se rellena con texto eliminado mediante los comandosd
/D
/x
/X
/c
/C
/s
/S
.Esto me resulta útil cuando quiero copiar texto, eliminar algo y reemplazarlo con el texto copiado. Los siguientes pasos ilustran un ejemplo:
y[motion]
: este texto se guarda"
y se0
registrad[motion]
: este texto se guarda en el"
registro"0p
donde
"
es el comando para usar un registro para el siguiente comando.En el paso final, si tuviera que pegar desde el registro predeterminado (con
p
), usaría el texto que acababa de eliminar (probablemente no lo que pretendía).Tenga en cuenta que
p
oP
pega desde el registro predeterminado. El equivalente a largo plazo sería""p
(o""P
) y"0
contiene el último tirón,"1
la última eliminación o cambio.Para más información ver
:help registers
.fuente
p
oP
pega desde el registro predeterminado. El equivalente a largo plazo sería""p
(o""P
)."
es el comando para usar un registro para el siguiente comando. Entonces""p
usaría el"
registro para el comando pegar y"0p
usaría el0
registro.0p
significaría ir al primer carácter de la línea actual y pegar desde el contenido del registro predeterminado ("
)."p
sería un comando incompleto ya que necesita especificar para qué comando usar el registrop
.¡Una de mis partes favoritas sobre los registros es usarlos como macros!
Digamos que está tratando con un archivo de valores delimitados por tabulaciones como tal:
Ahora decide que necesita agregar un signo de porcentaje al final del campo% Dev (a partir de la segunda línea). Haremos una macro simple en el
m
registro (seleccionado arbitrariamente) de la siguiente manera:Presione::
qm
Para comenzar a grabar macro en elm
registro.EE
: Ir al final de la 3ra columna.a
: Modo de inserción para agregar al final de esta columna.%
: Escriba el signo de porcentaje que queremos agregar.<ESC>
: Regrese al modo de comando.j0
: Ir al comienzo de la siguiente línea.q
: Detener la grabación de macroAhora podemos simplemente escribir
@m
para ejecutar esta macro en la línea actual. ¡Además, podemos escribir@@
para repetir, o100@m
para hacer esto 100 veces! La vida se ve bastante bien.En este punto, debería decir: " PERO ESPERE, ¿QUÉ MALO TIENE QUE VER ESTO CON LOS REGISTROS ?"
Excelente punto Vamos a investigar qué hay en el contenido del
m
registro escribiendo"mp
. Entonces obtenemos lo siguiente:Al principio, parece que accidentalmente abriste un archivo binario en el bloc de notas, pero a segunda vista, ¡ 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 una
!
antigua en lugar de aburrida%
.Luego tiremos esto al
n
registro escribiendoB"nyE
. Entonces, solo por diversión, ejecutemos lan
macro en una línea de nuestros datos usando@n
...OMG, AGREGÓ A
!
Esencialmente, 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.
fuente
+
lugar dej0
ir al primer carácter no en blanco en la línea siguiente.Otros registros útiles:
"*
o"+
- el contenido del portapapeles del sistema"/
- último comando de búsqueda":
- último comando.Tenga en cuenta que con las macros vim, puede editarlas, ya que son solo una lista de las pulsaciones de teclas utilizadas al grabar la macro. Por lo tanto, puede escribir en un archivo de texto la macro (usando
"ap
para escribir la macro a ) y editarlos, y cargarlos en un registro con"ay$
. Buena forma de almacenar macros útiles.fuente
vim --version
--clipboard
significa que no la tiene,+clipboard
significa que sí."*
y"+
son aún más"+
geniales : pega el último texto copiado conctrl+c
(copiar búfer), o cualquier acceso directo que use (oright-click>copy
)."*
pega el último texto resaltado con el mouse (búfer de selección). Entonces, si copia algoctrl+c
y luego resalta algo más con el mouse, puede elegir cuál pegar. Esto no funciona en Windows, donde estos dos registros son sinónimos."*
y"+
durante años! Pensé que solo gvim tenía acceso a los portapapeles del sistema, ¡pero aparentemente vim regular también!-xterm_clipboard
encendidovim --version
. ¿Algún paquete simple para instalar? (debian / apt-get). Gracias.El registro del agujero negro
_
es el/dev/null
de los registros.Lo uso en mi vimrc para permitir eliminar caracteres individuales sin actualizar el registro predeterminado:
y para pegar en modo visual sin actualizar el registro predeterminado:
fuente
x
vuelve menos conveniente para transponer caracteres.x
asignación ya no puede hacer elxp
"comando" para cambiar la corriente con el siguiente carácter. Muy útil para corregir errores tipográficos. También tenemosXp
que cambiar la corriente con el carácter anterior.Si alguna vez desea pegar el contenido del registro en un comando ex-mode, presione
<C-r><registerletter>
.¿Por qué usarías esto? Quería hacer una búsqueda y reemplazar una cadena larga, así que la seleccioné en modo visual, comencé a escribir la expresión de búsqueda / reemplazo
:%s/[PASTE YANKED PHRASE]//g
y seguí mi día.Si solo desea pegar una sola palabra en modo ex, puede asegurarse de que el cursor esté sobre ella antes de ingresar al modo ex, y luego presione
<C-r><C-w>
cuando esté en modo ex para pegar la palabra.fuente
:
línea de comando es lo mejor que aprendí hoy/[write out your regex]<cr>
y luego reemplazar solos/<C-R>//replacement/
. De esta forma, obtiene el beneficio de la retroalimentación en vivo sobre su expresión regular antes de ejecutar el reemplazo.Creo que el registro secreto del gurú es la expresión = registro. Se puede usar para mapeos creativos.
Puede usarlo junto con su sistema como se indica anteriormente u obtener respuestas de funciones VimL personalizadas, etc.
o simplemente cosas ad hoc como
fuente
Un truco genial es usar
"1p
para pegar la última eliminación / cambio (, y luego usar.
repetidamente para pegar las eliminaciones posteriores. En otras palabras,"1p...
es básicamente equivalente a"1p"2p"3p"4p
.Puede usar esto para revertir un puñado de líneas:
dddddddddd"1p....
fuente
Desde la página de ayuda de vim:
fuente
fuente
nmap <F2> @q
uso el registro q, porque luego para guardar una macro para que F2 se reproduzca, simplemente presionoqq
. Macro rápido guardar y reproducir.Utilizo el registro predeterminado para grep para texto en mi ventana vim sin tener que alcanzar el mouse.
:!grep "<CTRL-R>0"<CR>
fuente
Use registros en comandos con
@
. P.ej:Póngalos al mando:
Ahora
"ap
pegaráabc
.fuente
Una gran fuente de confusión es el registro predeterminado
"
. Es importante saber cómo funciona. Es mucho mejor si el registro predeterminado se evita la mayoría de las veces. La explicación de la documentación de Vim:Por lo tanto, el registro predeterminado es en realidad un puntero al último registro utilizado. Cuando elimina o tira algo, este registro apuntará a otros registros. Puede probar eso comprobando los registros. Siempre hay otro registro que es exactamente el mismo que el registro predeterminado: el registro de extracción (
"0
), el primer registro de eliminación ("1
), el registro de eliminación pequeño ("-
) o cualquier otro registro que se utilizó para eliminar o eliminar.La única excepción es el registro de agujeros negros. Vim doc dice:
Por lo general, usted es mucho mejor usando directamente:
"0
,"-
y"1-"9
registros por defecto o registros con nombre.fuente
Un registro que se pasa por alto es el '.' registro de puntos que contiene el último texto insertado sin importar cómo se insertó, por ejemplo, ct] (cambiar hasta]). Entonces te das cuenta de que necesitas insertarlo en otro lugar pero no puedes usar el método de repetición de puntos.
fuente
Mi registro favorito es el
':'
registro. Ejecutar@:
en modo Normal me permite repetir el comando ex ejecutado anteriormente.fuente
Mi amigo Brian escribió un artículo completo sobre esto. Creo que es una gran introducción a cómo usar los temas. https://www.brianstorti.com/vim-registers/
fuente