Réponses:
Vous recherchez la définition de undo-blocks
.
De :h undo-blocks
:
Une commande d'annulation annule normalement une commande tapée, quel que soit le nombre de modifications apportées par cette commande. Cette séquence de modifications annulables forme un bloc d'annulation. Ainsi, si la ou les touches tapées appellent une fonction, toutes les commandes de la fonction sont annulées ensemble.
Le même bloc est utilisé pour redo
. De :h redo
:
Les derniers changements sont mémorisés. Vous pouvez utiliser les commandes Annuler et Rétablir ci-dessus pour rétablir le texte tel qu'il était avant chaque modification. Vous pouvez également appliquer à nouveau les modifications en récupérant le texte avant l'annulation.
L' édition modale de vim est souvent considérée comme un opérateur (par exemple c
, d
...) appliquée sur une mouvement (par exemple iw
, w
, }
, ...). En tant que merveilleux sous-produit, Vim obtient de grosses défaites. Alors que d'autres éditeurs doivent deviner pour faire de nombreuses petites annulations en blocs d'annulation, Vim le fait naturellement. Un autre effet secondaire est que cela vous donne un opérateur de répétition .
(aka la commande point).
Votre question mentionne spécifiquement les frappes, donc je suppose que vous voulez savoir comment annuler de petites modifications en mode insertion. La réponse est que ce n'est pas "la voie Vim". "The Vim Way" signifie que vous serez en mode insertion pour une courte rafale à la fois. Cela signifie que lorsque des erreurs sont commises en mode insertion, vous quittez souvent le mode normal et corrigez le texte ou faites simplement une annulation u
, et réécrivez le texte.
Parfois, il est nécessaire de diviser un bloc d'annulation en mode insertion. Cela peut être accompli via <c-g>u
en mode insertion. Voir :h :undoj
et :h undo-blocks
pour plus d'informations.
Pour plus d'aide, je suggère ce qui suit:
:h undo-blocks
:h :undoj
:h undo-tree
:h persistent-undo
:h undo.txt
Il y a aussi quelques screencasts sur ce sujet:
Vous pouvez aussi y penser de cette façon: chaque fois que vous passez en mode insertion pour éditer du texte et que vous appuyez Esc, cela formera un bloc. Si vous essayez d'annuler ce bloc, vous irez à la même position avant de passer en mode d'insertion.
Par conséquent, vous pouvez "enregistrer" vos modifications simplement en quittant le mode d'insertion de temps en temps: disons que vous passez en mode d'insertion et écrivez une fonction. Vous pouvez continuer à coder et passer à la fonction suivante, mais il est parfois préférable de revenir au mode normal et de basculer à nouveau en mode insertion. De cette façon, vous pouvez structurer votre code de manière simple et si vous devez revenir en arrière, vous pouvez savoir dans quelle position vous vous retrouverez.
Remarque: si vous utilisez des flèches pour vous déplacer, c'est comme si vous appuyiez sur Esc+ [ hjkl]
CTRL-G u
en mode insertion, ce qui est utile si vous avez des macros en mode insertion.