Je suis sûr qu’il vous est déjà arrivé de supprimer ou modifier quelque chose dans votre code, puis de vouloir un peu après revoir ce que vous aviez supprimé. Il est possible d’utiliser u
pour remonter l’historique jusqu’à votre modification, et <c-r>
pour revenir au “présent”, mais c’est assez long. Si vous avez un plugin comme undotree, vous pouvez visualiser tout l’historique, et sauter directement à “il y a 15 secondes”, ou bien “il y a 2 minutes”, etc. C’est un peu mieux, mais toujours pas le plus optimal.
Une idée pour optimiser ce “déplacement dans le temps” (avancer ou reculer dans l’historique) est d’utiliser le défilement de la souris. Si vous défilez dans un sens, le “temps” recule : vous allez en arrière dans l’historique, et si vous défilez dans l’autre sens, le temps avance, vous revenez à des modifications plus récentes. Vous pouvez notamment utiliser le défilement horizontal, qui est assez peu utile lorsque l’on édite du code.
Voici la configuration pour faire cela avec Vim :
nnoremap <ScrollWheelRight> g+
nnoremap <ScrollWheelLeft> g-
Ici, j’utilise g+
et g-
, et non pas u
et <c-r>
. C’est parce que u
et <c-r>
fonctionnent comme un historique normal, alors que g+
et g-
ont véritablement une fonction de “remonter dans le temps”.
Par exemple, si vous insérez le texte salut
, puisque vous faites u
pour annuler, et que vous insérez coucou
, vous ne pourrez pas revenir à salut
avec u
ou <c-r>
, car vous avez annulé son insertion avec u
. Au contraire, g-
vous permettra effectivement de repasser par chaque étape d’édition, même celles qui ont été annulées.