Cette réponse dit:
Le système d'annulation / restauration 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?
Réponses:
Voir aussi
:h undo-redo
, qui répertorie toutes les commandes et leur utilisation.Il existe deux façons de parcourir l'arborescence d'annulation. La première consiste à «remonter le temps».
g+
etg-
traversera tous les nœuds de l'arbre 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 faitesg-
assez longtemps, vous arriverez toujours là où vous devez aller finalement).:earlier
et:later
prenez un descripteur de temps comme7m
ou1h
; encore une fois, cela peut vous sauter arbitrairement entre les branches d'annulation.L'autre méthode consiste à accéder à des nœuds spécifiques dans l'arborescence en utilisant
:undo n
oùn
est un numéro d'action. (Toutes les actions, c'est-à-dire les ajouts de texte, les suppressions, les remplacements, sont numérotées de manière séquentielle au fur et à mesure que vous les faites.) Vous pouvez rechercher le nombre d'actions sur les feuilles de l'arborescence d'annulation via:undolist
. Cela vous permettra de passer facilement d'une branche à l'autre. Vous pouvez ensuite utiliseru
etCtrl-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 un peu avec.
la source
undojoin
n'a rien à voir avec les branches; en fait, la toute prochaine section d'aide commence par dire "ci-dessus, nous n'avons discuté que d'une ligne d'annulation / rétablissement. Mais il est également possible de bifurquer." Existe-t-il un moyen d'utiliserundojoin
des branches que je ne vois tout simplement pas?Je suis un peu en retard à la fête, mais j'ai pensé mentionner que j'avais écrit un plugin de visualisation d'arbre d'annulation pour Vim: http://bitbucket.org/sjl/gundo.vim/
Personnellement, j'ai trouvé que tracer un graphique de l'arbre comme celui-ci était le seul moyen de comprendre.
la source
Plug 'sjl/gundo.vim'
puisnnoremap <F5> :GundoToggle<CR>
(en remplaçant<F5>
par la séquence de touches que vous souhaitez lier)Cette page explique tout ce que vous devez savoir:
http://vimdoc.sourceforge.net/htmldoc/usr_32.html
la source
Si vous utilisez vim, vous pouvez naviguer dans l'arborescence d'annulation en utilisant:
u
: (annuler) revenir en arrière dans l'arborescence d'annulationCtrl+R
: (refaire) avancer dans l'arborescence d'annulationAutres moyens de ramener ou d'avancer un document dans le temps:
:earlier 15m
: remonter le temps de 15 minutes:later 15m
: avancez dans le temps 15 minutesla source
earlier
etlater
qu'il ne se déplace pas d'une branche à l'autre. Je m'attendrais à ce que la plupart des gens ne se soucient pas vraiment ou ne se souviennent pas des différentes branches qu'ils ont créées. Mais je veux juste remonter le temps. Si vous voulez créer des branches et les nommer peutgit
- être ou un système de contrôle de version est une meilleure option.Je sais que cette question a reçu une réponse, mais j'ai pensé ajouter un exemple.
Créez un nouveau fichier et tapez:
undol
affichera l'arborescence d'annulation. À ce stade, vous n'avez rien défaitmaintenant appuyez sur ESC et modifiez la ligne en:
passez en mode normal et appuyez sur u (annuler), cela devrait supprimer «ancien». Si vous cochez
undol
, à ce stade, vous n'avez encore qu'une seule succursale.modifiez maintenant la ligne pour qu'elle dise:
:undol
Montre maintenant :Vous pouvez basculer vers la première branche en tapant
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+
etg-
. À ce stade,g+
ne fera rien (vous êtes à la feuille). Si vous appuyez surg-
"ancien" sera supprimé (vous parcourez le premier arbre d'annulation). C'est-à-dire que si vous supprimez "ancien" avecg-
et appuyez àg+
nouveau, "ancien" sera refait.Si vous tapez
Vous allez sauter à la feuille de la deuxième branche d'annulation et elle lira:
la source
Une grande partie de cela se résume ici:
http://vim.wikia.com/wiki/Using_undo_branches
la source
En plus d'utiliser gundo.vim, j'aime mentionner
g+
etg-
la source
Le paquet undotree est écrit en pur vimscript donc aucune exigence.
Et ajoutez ceci à votre vimrc avant qu'il ne soit trop tard:
la source