wikia delete vim undo

wikia - vim delete line



¿Cómo se usa el árbol de deshacer de VIM? (7)

Esta respuesta dice:

El sistema de deshacer / rehacer de Vim es inmejorable. Escriba algo, deshaga, escriba algo más, y aún puede recuperar lo primero que escribió porque Vim usa un árbol de deshacer en lugar de una pila. En casi cualquier otro programa, la historia de lo primero que escribió se pierde en esta circunstancia.

Esta es la primera vez que escucho esto. ¿Cómo puedo retroceder a lo largo del árbol?


Además de usar gundo.vim me gusta mencionar g+ y g-



Llego un poco tarde a la fiesta, pero pensé que mencionaría que escribí un complemento de visualización de árbol de deshacer para Vim: http://bitbucket.org/sjl/gundo.vim/

Personalmente, encontré que representar gráficamente el árbol de esta manera era la única forma en que podía darle sentido.



Si está utilizando vim, puede navegar a través del árbol de deshacer usando:

  • u : (deshacer) retroceder en el árbol de deshacer
  • Ctrl+R : (rehacer) avanzar en el árbol de deshacer

Otras formas de llevar o retrasar el documento a tiempo:

  • :earlier 15m : retrocede en el tiempo 15 minutos
  • :later 15m : mueve el frente a tiempo 15 minutos

Soy consciente de que esta pregunta ha sido respondida, pero pensé que agregaría un ejemplo.

Crea un nuevo archivo y escribe:

this is a line

undol mostrará el árbol de deshacer. En este punto no has deshecho nada

:undol number changes when saved 1 1 14:50:36

ahora presione ESC y modifique la línea para:

this is a old line

cambie al modo normal y presione u (deshacer), esto debería eliminar "viejo". Si undol , en este punto todavía tiene una sola rama.

ahora modifica la línea para que diga:

this is a new line

Ahora :undol muestra:

number changes when saved 2 2 87 seconds ago 3 2 3 seconds ago

Puede cambiar a la primera rama escribiendo

:u 2

esto te moverá al final de la rama asociada con el número 2. Puedes moverte a lo largo de esta rama con g+ y g- . En este punto, g+ no hará nada (estás en la hoja). Si presiona g- , se eliminará "viejo" (está atravesando el primer árbol de deshacer). Eso es si elimina "viejo" con g- y presiona g+ nuevamente, se volverá a hacer "viejo".

Si escribe

:u 3

Saltará a la hoja de la segunda rama de deshacer y se leerá:

this is a new line


Ver también :h undo-redo , que enumera todos los comandos y su uso.

Hay dos formas de atravesar el árbol de deshacer. Una es ir "atrás en el tiempo". g+ y g- atravesarán todos los nodos del árbol en orden cronológico o cronológico inverso (lo cual puede ser un poco confuso, porque puede saltar arbitrariamente entre las ramas deshechas, pero si lo hace g- suficiente siempre obtendrá donde necesitas ir eventualmente). :earlier y :later tome un descriptor de tiempo como 7m o 1h ; de nuevo, esto puede saltarle arbitrariamente entre las ramas de deshacer.

La otra forma es saltar a nodos específicos en el árbol usando :undo n donde n es el número de una acción. (Todas las acciones, es decir, adiciones de texto, eliminaciones, reemplazos, se numeran secuencialmente a medida que las hace). Puede buscar el número de acciones en las hojas del árbol de deshacer a través de :undolist . Esto te permitirá saltar fácilmente entre las ramas. Luego puede usar u Ctrl-R para subir y bajar esa rama.

Hay algunos buenos ejemplos en la ayuda de Vim. La mejor manera de descubrir cómo funciona esto es jugar con eso un poco.