Veamos cómo deshacer cambios y volver a rehacerlos cuando estamos trabajando en un archivo editándolo con el edito Vim

No somos seres perfectos y en ocasiones cometemos errores. En la vida real algunos no se pueden reparar y no podemos ir atrás en el tiempo a deshacer el error por lo que no queda otra opción que asumirlos.

Mientras estamos editando un archivo con Vim tenemos la posibilidad de deshacer los cambios o errores que hayamos cometido o volver a rehacerlos si realmente eran necesarios.

Veremos cómo podemos deshacer un cambio o varios que hayamos realizado y cómo podremos volver a deshacer lo deshecho si realmente esos cambios eran necesarios.

Este artículo viene a engrosar la lista de artículos y tutoriales sobre el editor Vim que hace tiempo vengo publicando en el blog y que puedes leer en este enlace:

Quizás estás acostumbrado a utilizar Ctrl-Z en tu editor de texto o en muchas otras aplicaciones para deshacer el cambio más reciente que hayamos realizado en un documento, etc.

En Vim, no existe ese atajo de teclado, pero se puede realizar la misma tarea de forma similar con su propio comando. Para deshacer el cambio más reciente de un documento, podemos ejecutar el comando :u o en modo normal pulsar sobre la tecla u (de undo)

Al pulsar ese comando, se deshará el último cambio que hemos hecho en un documento. Si hemos realizado varios cambios en una misma línea podemos deshacer todos a la vez con la tecla U

Si queremos que regresen esos cambios que hemos deshecho, tendremos que pulsar la combinación de teclar Ctrl+r (la r de redo).

También tenemos la opción de viajar en el tiempo con Vim gracias a los comando :ea (de earlier) y :lat (de later) gracias estos comandos podremos ir directamente al cambio anterior que queramos o posterior respectivamente.

Por ejemplo, si hemos realizado 4 cambios en un documento y ejecutamos el comando :ea 2 los dos últimos cambios serán revertidos. Y si ejecutamos :lat 1 nos rehará el último cambio.

Estos dos comandos también trabajan en Vim no solo con los últimos cambios realizados, si no también en unidades de tiempo.

Es decir, que si nos damos cuenta que hace 5 minutos estamos estado realizando cambios en la parte equivocada del documento y queremos deshacer todo lo realizado en esos 5 minutos podemos deshacerlos mediante el comando :ea 5m

Como habéis podido suponer ese 5m se refiere a 5 minutos, de manera similar podemos especificar segundos (con el sufijo s), horas (con el sufijo h), ¡o incluso días! (mediante el sufijo d después del número).

No se vayan todavía, aún hay más.

Cada vez que pulsamos u para deshacer un cambio, Vim crea una “rama” en la que guarda el estado del archivo antes de realizar la acción.

Podremos “navegar” por esas ramas hacia atrás o hacia adelante mediante g- y g+ respectivamente. ¿un ejemplo práctico? y con esto acabamos la lección por hoy. Practiquen en sus casas!! 🙂