Los registros son espacios de almacenamiento nombrados donde Vim guarda texto, macros y contenido del sistema. Entender qué registro usa cada operación evita pérdidas de texto inesperadas al pegar.


Abreviaciones de modos:
N = Normal | I = Insert | V = Visual | C = Command | VB = Visual Block

Ver el contenido de los registros

ModoComandoAcción
C:regLista todos los registros con su contenido
C:reg {a}Muestra el contenido del registro {a}
C:reg a b cMuestra varios registros a la vez
N"{a}Prefijo para usar el registro {a} en el siguiente comando

Tipos de registros

RegistroNombreContenido
"Sin nombreÚltimo texto borrado o copiado (default)
0YankÚltimo texto copiado con y (nunca sobreescrito por d)
19NumeradosHistorial de los últimos 9 textos borrados
azNombradosUso manual; Vim nunca los sobreescribe
AZNombrados appendAñaden texto al registro minúscula correspondiente
+PortapapelesClipboard del sistema (requiere +clipboard)
*SelecciónSelección primaria del sistema (X11/macOS)
_BlackholeDescarta el texto sin almacenarlo
/BúsquedaÚltimo patrón de búsqueda
:ComandoÚltimo comando ejecutado
.InserciónÚltimo texto insertado en Insert mode
%Nombre archivoNombre del archivo del buffer actual
#AlternativoNombre del buffer alternativo
-Small deleteÚltimo texto borrado menor a una línea

Copiar y pegar con registros

ModoComandoAcción
N"{a}yyCopia la línea al registro {a}
N"{a}ywCopia la palabra al registro {a}
N"{a}pPega el contenido del registro {a} después del cursor
N"{a}PPega el contenido del registro {a} antes del cursor
N"0pPega el último yank (sin importar borrados posteriores)
N"+pPega desde el clipboard del sistema
N"+yCopia al clipboard del sistema
N"*yCopia a la selección primaria del sistema
N"_dBorra sin almacenar en ningún registro
N"_ddBorra la línea sin sobreescribir el registro sin nombre

Registros en Insert y Command mode

ModoComandoAcción
I<Ctrl-r>{a}Inserta el contenido del registro {a}
I<Ctrl-r>"Inserta el contenido del registro sin nombre
I<Ctrl-r>0Inserta el último yank
I<Ctrl-r>+Inserta el clipboard del sistema
I<Ctrl-r>/Inserta el último patrón de búsqueda
I<Ctrl-r>.Inserta el último texto insertado
I<Ctrl-r>%Inserta el nombre del archivo actual
C<Ctrl-r>{a}Inserta el contenido del registro en la línea de comandos
C<Ctrl-r><Ctrl-w>Inserta la palabra bajo el cursor en la línea de comandos

Manipular registros nombrados

ModoComandoAcción
N"{a}yyGuarda la línea en el registro {a}
N"{A}yyAñade la línea al registro a (append)
C:let @{a}='texto'Asigna texto directamente a un registro
C:let @{a}=@{a}.'más'Concatena texto al registro existente
C:let @{a}=@"Copia el registro sin nombre al registro {a}

Tips

  • "0p en lugar de p es la solución al problema más común en Vim: pegar después de haber borrado algo, ya que "0 siempre contiene el último y y nunca es sobreescrito por d o x.
  • "_d (blackhole register) es esencial al reemplazar texto: borra sin contaminar el registro sin nombre, dejando intacto lo que querías pegar.
  • Los registros 19 forman un historial de borrados; "1p, "2p permiten recuperar texto borrado hace varios pasos sin depender de u.
  • <Ctrl-r><Ctrl-w> en Command mode inserta la palabra bajo el cursor directamente en la búsqueda o sustitución: elimina el tipeo manual en :s/\<palabra\>/nuevo/g.
  • Usar mayúsculas ("A, "B) para acumular texto de múltiples lugares en un solo registro y pegarlo junto de una vez es una técnica muy eficiente para consolidar fragmentos dispersos.