Registros y marcas a nivel experto
Los registros son un portapapeles con decenas de ranuras; las marcas y las listas de saltos, tu teletransporte. Domínalos y tu memoria de trabajo se multiplica.
En el Nivel 3 viste registros y marcas por encima. Aquí los exprimimos: registros especiales, el de expresión, marcas globales que cruzan archivos, y las listas de saltos y cambios que te llevan exactamente a donde estuviste.
- Dominar los registros especiales y el de expresión.
- Añadir a un registro y usar el “black hole”.
- Marcas locales, globales y automáticas.
- Navegar con la jumplist y la changelist.
Registros: mucho más que copiar y pegar
Cada registro es una ranura de portapapeles. Antepón "x a un yank, delete o paste para usar el registro x.
| Registro | Contenido |
|---|---|
"a–"z |
los que asignas tú ("ayy) |
"A–"Z |
añaden al registro (no lo pisan) |
"0 |
el último yank (los delete no lo tocan) |
"1–"9 |
anillo de borrados recientes |
"_ |
el “black hole”: borra sin guardar nada |
"+ / "* |
portapapeles del sistema |
"% / "# |
archivo actual / alterno |
": "/ ". |
último comando / búsqueda / texto insertado |
"= |
registro de expresión (evalúa código) |
Dos trucos que usan los expertos sin pensar: (1) tras borrar algo, tu yank sigue intacto en "0 — pega con "0p aunque hayas borrado diez cosas después. (2) Para borrar sin ensuciar tu portapapeles, usa el black hole: "_dd borra la línea pero conserva lo que tenías copiado. El clásico “borro esto para pegar aquí” deja de fallar.
Añadir a un registro
Las MAYÚSCULAS acumulan. Recolecta líneas de sitios distintos en un solo registro:
"ayy → copia la línea al registro a
… te mueves a otra línea …
"Ayy → AÑADE esta línea al registro a (no la pisa)
"ap → pega ambas
El registro de expresión
"= evalúa una expresión y pega el resultado. En modo Insertar, Ctrl-r= abre el prompt:
En Insertar: <C-r>= 24 * 60 <CR> → inserta 1440
Y para insertar cualquier registro mientras escribes, Ctrl-r + la letra: Ctrl-ra pega el registro a sin salir de Insertar.
Mira todo con :registers.
Marcas: teletransporte con precisión
m{letra} pone una marca; el backtick + la letra salta a la posición exacta (fila y columna). El apóstrofo + la letra salta al inicio de esa línea.
| Marca | Qué es |
|---|---|
a–z |
locales al archivo (las pones tú) |
A–Z |
globales: cruzan archivos (salta a otro fichero) |
`. |
posición del último cambio |
`^ |
posición de la última inserción |
`" |
posición al cerrar el archivo la última vez |
`[ / `] |
inicio / fin del último texto copiado o pegado |
`< / `> |
inicio / fin de la última selección visual |
Pon una marca global en cada archivo caliente de tu tarea: mR en el router, mM en el modelo, mT en los tests. Ahora, desde cualquier sitio, backtick + R te teletransporta al router aunque esté en otro buffer. Es como tener anclas nombradas por todo el proyecto.
Jumplist y changelist
Neovim recuerda por dónde has saltado y qué has cambiado. Dos listas que casi nadie aprovecha:
Jumplist
Ctrl-o retrocede al salto anterior; Ctrl-i avanza. Un salto es cualquier movimiento “grande” (búsqueda, G, gd…). Míralo con :jumps.
Changelist
g; va al cambio anterior; g, al siguiente. Te lleva por donde has editado, no por donde has saltado. Míralo con :changes.
Saltaste a una definición con gd, luego a otra referencia, luego buscaste algo… y quieres volver. Ctrl-o te devuelve paso a paso por toda tu ruta, aunque cruce archivos. Es el botón “atrás” del navegador, pero para tu código. Combinado con g; (último sitio que editaste) casi nunca necesitas recordar dónde estabas.
Ver solución
"ayy copia la primera al registro a. Te mueves y "Ayy (mayúscula) añade la segunda; otra vez para la tercera. Vas a donde quieras pegarlas y "ap las suelta las tres juntas.
- Borra algo, luego borra más, y recupera lo primero con
"0pvs"1p. - Usa
"_ddpara borrar sin perder tu portapapeles. - Pon marcas globales en dos archivos y salta entre ellos con backtick + letra.
- Navega tu historial con Ctrl-o / Ctrl-i y con
g;/g,.