Comment utilisez-vous l'arbre des modifications dans vim

14

Est-il possible de récupérer les changements de branche que j'ai "abandonnés"? Par exemple, j'annule plusieurs opérations en utilisant u, puis j'effectue un changement en mode d'insertion. Mais alors je réalise que je ne veux pas avoir ce changement, je préfère retourner là où j'étais au début (avant de défaire).

Ces changements sont-ils perdus à jamais?

Nebril
la source

Réponses:

12

Pour naviguer dans l'arbre d'annulation, votre meilleur pari est d'utiliser le plugin Gundo . Cela crée une nouvelle fenêtre divisée avec des liaisons spéciales pour passer aux différentes branches de l'arborescence d'annulation ainsi qu'un volet d'aperçu qui vous montre exactement ce qui a changé entre chaque nœud de l'arborescence.

Steve Vermeulen
la source
Un autre choix serait UndoTree.
musicmatze
12

Pour des cas simples comme celui-ci, vous pouvez simplement appuyer sur g-.

Essentiellement, cela permet de parcourir la liste des modifications chronologiquement (en traitant a ucomme un changement réel), plutôt que de manière linéaire (comme avec u/ <C-r>).

Par exemple, si vous avez inséré quelques lignes et que vous appuyez sur g-, cela se produit:

manifestation

Poignée de porte
la source
comment avez-vous créé le gif animé?
guido
4
@guido J'ai utilisé un outil personnalisé appelé mkcast .
Poignée de porte
2

Non, vous ne pouvez pas reculer et avancer dans l'arbre. La meilleure façon est d'utiliser un plugin pour ce travail.

Un autre plugin est Undotree . C'est comme Gundo , mais avec quelques différences:

  1. Une implémentation pure de vimscript et aucune bibliothèque tierce (comme python) n'est nécessaire, ne vous inquiétez pas des performances, ce n'est pas si grave pour vim de gérer cela. La seule dépendance est l'outil 'diff' qui est toujours livré avec vim et même sans 'diff', vous pouvez toujours utiliser la plupart des fonctionnalités de ce script.
  2. Arbre d'annulation mis à jour en temps réel. Une fois les modifications apportées, l'arborescence d'annulation sera mise à jour simultanément.
  3. Plusieurs marques utiles, comme le jeu de modifications actuel, le jeu de modifications suivant, le jeu de modifications enregistré, etc.
  4. Basculez entre l'horodatage relatif et l'horodatage absolu.
  5. Fenêtre d'annulation mise à jour en temps réel.
  6. Possibilité d'effacer l'historique.
  7. Plus personnalisable.
adelarsq
la source
4
Cette réponse n'est-elle pas directement réfutée par la publication de la poignée de porte ?
Caleb