Demasiado a menudo cometo el error de escribir con la ventana equivocada enfocada (y lo he hecho varias veces con un autenticador USB). En los programas con muchas teclas de acceso rápido habilitadas (Gmail, VLC, Vim), esto a menudo tiene la consecuencia no deseada de realizar modificaciones no deseadas.
A veces puedo rastrear mis pasos y recordar lo que he escrito para reparar cualquier cambio o revertir cualquier configuración que haya modificado si me descubro temprano. Por desgracia, eso no es siempre el caso.
En Vim, podría tener algo tan inocuo y aparente como alterar una línea de texto que se deshace fácilmente. O bien, podría haber modificado sin saberlo algo que no es tan fácil de identificar. Si accidentalmente escribo una secuencia de comandos no deseados en Vim, ¿cómo puedo verificar y deshacer cualquier edición o cambio en la configuración?
:e!
haría eso:e!
sería malo si no has guardado desde el último estado correcto, yu
podría ser insuficiente si escribiste un montón de cosas. (Si ha escritodate month
, por ejemplo, entonces habría eliminado una etiqueta, establecer una marca, y se realizó una búsqueda, que sería muy confuso para deshacer a travésu
.)u
ser parte de la secuencia, se realizan algunas acciones de deshacer en el medio.Respuestas:
Invocar
para ver cuándo realizó el último conjunto de cambios. Si dice que se hicieron algunos cambios, por ejemplo, "hace 3 segundos", y sabe que solo lo cambió intencionalmente , digamos, hace un minuto, luego ejecute
para volver al estado deseado. De lo contrario, si no hay cambios recientes, no tiene que hacer nada.
Además referencia:
:help undo-tree
.fuente
Para reformular la pregunta, está buscando una manera de ver u obtener notificaciones sobre los cambios que ha realizado en un archivo, y luego usar una función de deshacer. Tal vez haya otra forma o incluso complementos que lo admitan. Pero explicaré lo que he estado usando para el mismo propósito.
Combina la función vim existente para hacer esto. Por ejemplo, podría definir una función como:
Luego puede llamarlo más tarde e incluso asignar una tecla de acceso directo.
Esto abrirá una vista de diferencias basada en una ventana dividida que le mostrará los cambios realizados desde el último guardado. Después de haber identificado los cambios realizados, puede salir de esa vista y usar otras funciones de vim como deshacer y deshacer árbol, etc. o incluso complementos para volver a los estados anteriores.
Me doy cuenta de que esto no es ideal porque tienes que tener un cierto tipo de flujo de trabajo para que esto sea útil. Pero esto funciona bastante bien. Y en el lado positivo, no estamos cambiando cómo funciona vim ni confiamos en nada exterior.
Espero que encuentres esto útil. Hace un tiempo, adapté esta solución de fragmentos encontrados en Internet, incluido vim Wikia. Entonces ahí es donde se debe cualquier crédito.
fuente
Me parece que la respuesta simple a esto es presionar
u
hasta que deshaga un cambio que desea conservar, luego presioneCtrl-R
.fuente
Como @superjer, sigo presionando uhasta que el
[+]
marcador rojo en mi línea de estado desaparece.fuente
:e!
también es una buena solución; en estos días, Vim incluso mantendrá sus cambios "descartados" en el historial de deshacer.:earlier 1f
. Los1f
medios "1 anterior estado guardado", por lo que volverá a la anterior vez que guardó el archivo. Si se modifica el búfer, eso deshace todas las modificaciones. Si el búfer no se modifica (es decir, actualmente está en un estado guardado), irá a la hora anterior en que guardó el archivo.