El `.
comando lo llevará a su último cambio.
El `
va a una marca, y .
es una marca "especial" que se establece automáticamente en la posición donde se realizó el último cambio. Consulte :help `.
para obtener más información.
También existe lo ``
que lo llevará de regreso a donde estaba el cursor antes de que hiciera su último salto. Ver : ayuda``
para más información.
Otra marca útil es `^
; Esta es la posición donde el cursor fue la última vez que se detuvo el modo de inserción. Ver :help `^
.
Consulte :help mark-motions
para obtener información más general sobre el uso de marcas (incluidas algunas otras marcas "especiales" que se configuran automáticamente).
g;
yg,
para moverse entre las posiciones en la lista de cambios. Ver:h g;
y:h g,
'
(apóstrofe) en lugar de`
(retroceso).Aquí hay otro enfoque que se ajusta a su escenario dado, y saltará a donde estaba inmediatamente antes de
gg
(no a la última línea cambiada).Utilizar CtrlO
Cuando presiona
gg
, su antigua posición del cursor se empuja a la lista de salto . De:help jumplist
:Esto requiere que esté usando Vim (no vi) con la
+jumplist
función. Si:echo has('jumplist')
imprime1
, entonces puede usar esto.fuente
Para agregar a la respuesta de dnetserr y al comentario de Peter Rincker, Vim mantiene una lista de cambios y tiene algunos comandos asociados con esto.
enumerará los cambios, mostrándole dónde estaban y qué eran. Por ejemplo:
La línea con los
>
espectáculos muestra en qué parte de la pila de cambios se encuentra, algo así como la lista de salto (:jumps
) o la pila de etiquetas (:tags
). También, como la lista de salto y la pila de etiquetas, puede recorrer esta lista.En el modo normal, los movimientos son
g;
ir a una ubicación de cambio anterior eg,
ir a la siguiente. También puede escribir el número del cambio antesg;
og,
para ir a ese cambio de la lista. Arriba,2g;
me llevaría a donde ocurrió el cambio que involucra stdio.h.Cuando está en el medio de la pila, los números de las
:changes
actualizaciones muestran las distancias relativas. Por ejemplo:Esto muestra que puedo retroceder uno (
1g;
o solog;
) o avanzar uno (1g,
o solog,
).Esto es genial si el cambio al que quieres llegar realmente ocurrió hace algunas modificaciones
La desventaja de esto es que no parece actuar como un movimiento normal. Por ejemplo, no se puede hacer
dg;
para eliminar desde el cursor hasta el punto de cambio anterior, mientras qued'.
yd'^
hacer el trabajo como movimientos.fuente
g;
irá a la línea editada previamente.fuente
Como el comando Deshacer en Vi actuará como rehacer cuando se deshizo el último comando, lo he utilizado
uu
como un medio para volver a donde edité por última vez.Si está ejecutando Vim con
nocompatible
set (como lo hace la mayoría de la gente), desea usaru
seguido deCTRL+R
para deshacer y rehacer. Deuu
lo contrario funcionará como en Vi.fuente
:set nocompatible
no se usa.vim
(connocompatible
) hace dos deshacer conuu
, pero yo usou
yCTRL+r
para el mismo efecto.