Cette réponse dit:
Le système d'annulation/rétablissement de Vim est imbattable. Tapez quelque chose, annulez, tapez quelque chose d'autre, et vous pouvez toujours récupérer la première chose que vous avez tapée car Vim utilise un arbre d'annulation plutôt qu'une pile. Dans presque tous les autres programmes, l'historique de la première chose que vous avez tapée est perdu dans cette circonstance.
C'est la première fois que j'en entends parler. Comment puis-je revenir en arrière le long de l'arbre?
Voir également :h undo-redo
, qui répertorie toutes les commandes et leur utilisation.
Il existe deux façons de parcourir l'arbre d'annulation. L'une consiste à remonter le temps. g+
et g-
traversera tous les nœuds de l'arborescence dans l'ordre chronologique ou chronologique inverse (ce qui peut être un peu déroutant, car il peut sauter arbitrairement entre les branches d'annulation, mais si vous le faites g-
assez longtemps, vous arriverez toujours là où vous devez aller éventuellement). :earlier
et :later
prenez un descripteur de temps comme 7m
ou 1h
; encore une fois, cela peut vous faire sauter arbitrairement entre les branches d'annulation.
L'autre méthode consiste à accéder à des nœuds spécifiques de l'arborescence à l'aide de :undo n
où n
est le numéro d'une action. (Toutes les actions, c'est-à-dire les ajouts de texte, les suppressions, les remplacements, sont numérotées séquentiellement au fur et à mesure que vous les effectuez.) Vous pouvez rechercher le nombre d'actions sur les feuilles de l'arbre d'annulation via :undolist
. Cela vous permettra de sauter facilement entre les branches. Vous pouvez ensuite utiliser u
et Ctrl-R
pour monter et descendre cette branche.
Il existe de bons exemples dans l'aide de Vim. La meilleure façon de comprendre comment cela fonctionne est de jouer avec un peu.
Je suis un peu en retard à la fête, mais j'ai pensé que je mentionnerais que j'ai écrit un plugin de visualisation d'arbre d'annulation pour Vim: http://bitbucket.org/sjl/gundo.vim/
Personnellement, j'ai trouvé que représenter graphiquement l'arbre comme celui-ci était la seule façon de lui donner un sens.
Cette page explique tout ce que vous devez savoir:
Si vous utilisez vim, vous pouvez naviguer dans l'arborescence d'annulation à l'aide de:
u
: (annuler) recule dans l'arborescence d'annulationCtrl+R
: (refaire) avancer dans l'arbre d'annulationAutres moyens de faire avancer ou reculer le document dans le temps:
:earlier 15m
: reculer de 15 minutes:later 15m
: avancer de 15 minutesJe sais que cette question a été répondue, mais j'ai pensé ajouter un exemple.
Créez un nouveau fichier et saisissez:
this is a line
undol
affichera l'arbre d'annulation. À ce stade, vous n'avez rien défait
:undol
number changes when saved
1 1 14:50:36
appuyez maintenant sur ESC et modifiez la ligne pour:
this is a old line
passer en mode normal et appuyer sur u (annuler), cela devrait supprimer "old". Si vous cochez undol
, à ce stade, vous n'avez toujours qu'une seule branche.
modifiez maintenant la ligne pour qu'elle dise:
this is a new line
Maintenant :undol
spectacles:
number changes when saved
2 2 87 seconds ago
3 2 3 seconds ago
Vous pouvez passer à la première branche en tapant
:u 2
cela vous amènera à la fin de la branche associée au numéro 2. Vous pouvez vous déplacer le long de cette branche avec g+
et g-
. À ce point g+
ne fera rien (vous êtes à la feuille). Si vous appuyez sur g-
"Old" sera supprimé (vous parcourez le premier arbre d'annulation). C'est-à-dire si vous supprimez "old" avec g-
et appuyez sur g+
encore une fois, "old" sera refait.
Si vous tapez
:u 3
Vous passerez à la feuille de la deuxième branche d'annulation et vous lirez:
this is a new line
Beaucoup de cela est résumé ici:
Outre l'utilisation de gundo.vim, j'aime mentionner g+
et g-