Lorsque vous utilisez u
ou CTL-R
pour annuler ou refaire une modification dans vim, il semble que je modifie des morceaux de texte, pas seulement la frappe la plus récente.
Qu'est-ce qui détermine la taille du bloc considéré comme un seul montage?
la source
CTRL-G u
en mode insertion, ce qui est utile si vous avez des macros en mode insertion.L' édition modale de vim est souvent considérée comme un opérateur (par exemple
c
,d
...) appliquée sur une mouvement (par exempleiw
,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:
Il y a aussi quelques screencasts sur ce sujet:
la source
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]
la source