Esta respuesta dice:
El sistema de deshacer / rehacer de Vim es inmejorable. Escriba algo, deshaga, escriba otra cosa, y aún puede recuperar lo primero que escribió porque Vim usa un árbol de deshacer en lugar de una pila. En casi todos los demás programas, el historial de lo primero que escribió se pierde en esta circunstancia.
Esta es la primera vez que escucho de esto. ¿Cómo puedo dar marcha atrás a lo largo del árbol?
Respuestas:
Vea 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+
yg-
atravesará todos los nodos en el árbol en orden cronológico o cronológico inverso (lo cual puede ser un poco confuso, ya que puede saltar arbitrariamente entre las ramas de deshacer, pero si lo haceg-
lo suficiente, siempre llegará a donde necesita ir finalmente).:earlier
y:later
tome un descriptor de tiempo como7m
o1h
; De nuevo, esto puede saltar arbitrariamente entre las ramas de deshacer.La otra forma es saltar a nodos específicos en el árbol usando
:undo n
wheren
es un número de acción. (Todas las acciones, es decir, adiciones de texto, eliminaciones, reemplazos, se numeran secuencialmente a medida que las realiza). Puede buscar el número de acciones en las hojas del árbol de deshacer mediante:undolist
. Esto te permitirá saltar fácilmente entre las ramas. Luego puede usaru
yCtrl-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 un poco con él.
fuente
undojoin
no tiene nada que ver con las ramas; de hecho, la siguiente sección de ayuda comienza diciendo "Arriba solo discutimos una línea de deshacer / rehacer. Pero también es posible ramificar". ¿Hay alguna forma de usarundojoin
con ramas que simplemente no estoy viendo?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, descubrí que graficar el árbol de esta manera era la única forma en que podía darle sentido.
fuente
Plug 'sjl/gundo.vim'
y luegonnoremap <F5> :GundoToggle<CR>
(reemplazando<F5>
por cualquier secuencia de teclas que desee vincular)Esta página explica todo lo que necesita saber:
http://vimdoc.sourceforge.net/htmldoc/usr_32.html
fuente
Si está usando vim, puede navegar a través del árbol de deshacer usando:
u
: (deshacer) retroceder en el árbol de deshacerCtrl+R
: (rehacer) avanzar en el árbol de deshacerOtras formas de llevar el documento hacia atrás o hacia adelante a tiempo:
:earlier 15m
: retroceder en el tiempo 15 minutos:later 15m
: mueva el frente a tiempo 15 minutosfuente
earlier
ylater
no se mueve entre las ramas. Esperaría que a la mayoría de las personas no les importe o recuerden las diversas ramas que crearon. Pero solo quiero retroceder en el tiempo. Si desea crear ramas y nombrarlas quizásgit
o un sistema de control de versiones es una mejor opción.Sé que esta pregunta ha sido respondida, pero pensé en agregar un ejemplo.
Cree un nuevo archivo y escriba:
undol
mostrará el árbol de deshacer. En este punto no has deshecho nadaahora presione ESC y modifique la línea para:
cambie al modo normal y presione u (deshacer), esto debería eliminar "viejo". Si marca
undol
, en este punto todavía tiene una sola rama.ahora modifique la línea para que diga:
Ahora
:undol
muestra:Puede cambiar a la primera rama escribiendo
esto lo moverá al final de la rama asociada con el número 2. Puede moverse a lo largo de esta rama con
g+
yg-
. En este puntog+
no hará nada (estás en la hoja). Si presionag-
"viejo" se eliminará (está atravesando el primer árbol de deshacer). Es decir, si quita "viejo" cong-
y presionag+
nuevamente, se volverá a hacer "viejo".Si escribes
Saltará a la hoja de la segunda rama de deshacer y se leerá:
fuente
Mucho de esto se resume aquí:
http://vim.wikia.com/wiki/Using_undo_branches
fuente
Además de usar gundo.vim, me gusta mencionar
g+
yg-
fuente
El paquete no escrito está escrito en vimscript puro, por lo que no es necesario.
Y agregue esto a su vimrc antes de que sea demasiado tarde:
fuente