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.
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
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.
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>
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.
Dans vim 8.1+ ainsi que dans neovim , vous pouvez simplement utiliser :u0
: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.
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.