¿Cómo se usa el árbol de cambios en vim?

14

¿Es posible recuperar la rama de cambios que "abandoné"? Por ejemplo, estoy deshaciendo varias operaciones usando u, luego estoy haciendo un cambio en el modo de inserción. Pero luego me doy cuenta de que no quiero tener este cambio, prefiero volver a donde estaba al principio (antes de deshacer).

¿Se pierden estos cambios para siempre?

Nebril
fuente

Respuestas:

12

Para navegar por el árbol de deshacer, su mejor opción es usar el complemento Gundo . Esto crea una nueva ventana dividida con enlaces especiales para saltar a diferentes ramas dentro del árbol de deshacer, así como un panel de vista previa que muestra exactamente lo que cambió entre cada nodo en el árbol.

Steve Vermeulen
fuente
Otra opción sería UndoTree.
musicmatze
12

Para casos simples como este, simplemente puede presionar g-.

Esencialmente, lo que esto hace es recorrer la lista de cambios cronológicamente (tratando a ucomo un cambio real), en lugar de linealmente (como con u/ <C-r>).

Por ejemplo, si ha insertado algunas líneas y presiona g-, esto sucede:

demostración

Perilla de la puerta
fuente
¿Cómo creaste el gif animado?
guido
44
@ guido Usé una herramienta personalizada llamada mkcast .
Pomo de la puerta
2

No, no puedes retroceder y avanzar en el árbol. La mejor manera es usar un complemento para este trabajo.

Otro complemento es el Undotree . Es como Gundo , pero con algunas diferencias:

  1. Se necesita una implementación de vimscript pura y no se necesitan bibliotecas de terceros (como python), no se preocupe por el rendimiento, no es un gran problema para vim manejar esto. La única dependencia es la herramienta 'diff' que siempre se envía con vim e incluso sin 'diff' todavía puede usar la mayoría de las características de este script.
  2. Árbol de deshacer actualizado en tiempo real. Una vez que realice los cambios, el árbol de deshacer se actualizará simultáneamente.
  3. Varias marcas útiles, como el conjunto de cambios actual, el próximo conjunto de cambios rehacer, el conjunto de cambios guardado, etc.
  4. Alternar entre la marca de tiempo relativa y la marca de tiempo absoluta.
  5. Ventana de deshacer actualizada en tiempo real.
  6. Capacidad para borrar el historial de deshacer.
  7. Más personalizable
adelarsq
fuente
44
¿No es esta respuesta directamente refutada por la publicación de doorknob ?
Caleb