web-dev-qa-db-fra.com

Annuler toutes les modifications depuis l'ouverture du tampon dans vim

Comment annuler toutes les modifications depuis l'ouverture d'un tampon? J'imagine qu'il peut y avoir une forme de :earlier qui fait cela.

UPDATE : Beaucoup suggèrent des solutions pour passer aux écritures de fichiers antérieures. Ce n'est pas ce que j'ai demandé. Je veux revenir à l'état d'origine du fichier lorsque je l'ai chargé à l'origine dans un tampon, quel que soit le nombre d'écritures effectuées depuis lors.

43
David Rivers

Pour ramener le tampon actuel à l'état avant le tout premier changement mémorisé par Vim dans la liste d'annulation (voir :help undo-tree), utilisez la commande

:u1|u
74
ib.

Vous pouvez utiliser le

:edit!

pour entrer dans le premier état enregistré. Voir :help edit! pour plus d'informations.

Vous pouvez également vérifier quelque chose comme gundo.vim ( peut être trouvé ici ), qui affiche graphiquement tout l'arbre d'annulation, et vous pouvez facilement sauter entre les points. Ensuite, il y a le histwin plugin que je n'ai pas encore utilisé, mais qui offre des fonctionnalités similaires.

51
Zsolt Botykai

De la documentation

: u [ndo] {N} Aller au numéro après changement {N}. Voir | undo-branches | pour la signification de {N}. {pas à Vi}

Si vous tapez :u 1 il semble aller après le premier changement; en appuyant sur u ou en tapant :u reviendra alors au changement.

Sinon, vous pouvez utiliser un très grand nombre pour :earlier ou g- par exemple. :earlier 100000000 ou 100000000g-

Si vous mettez cela dans une cartographie/commande, cela pourrait faire n'importe lequel de ces éléments sans trop de problèmes. par exemple.

:nnoremap <C-F12> :earlier 100000000<CR>

6
benpmorgan

Pour accéder à l'état du fichier précédemment enregistré, je pense que le travail suivant:

:earlier 1f

De la documentation:

 :earlier {N}f      Go to older text state {N} file writes before.
                When changes were made since the last write
                ":earlier 1f" will revert the text to the state when
                it was written.  Otherwise it will go to the write
                before that.
                When at the state of the first file write, or when
                the file was not written, ":earlier 1f" will go to
                before the first change.
3
Xavier T.

Dans vim 8.1+ ainsi que dans neovim , vous pouvez simplement utiliser :u0

3
Hope
:earlier {N}m Go to older text state about {N} minutes before.

Cela devrait aider ... Et même vous avez {N} h, soit environ {N} heures avant.

0
user379997

Une solution graphique:

Le plugin Gundo permet une comparaison visuelle des changements dans l'historique d'annulation.

Ouvrez le "volet d'historique d'annulation" de Gundo, tapez G allez à la dernière ligne, puis nous pouvons revenir au fichier d'origine.

0
ying17zi