À un moment donné, mon Vim annulerait un mot entier lorsque je frapperais u
.
[i]typing some words[C-c][u]
Résulterait en
typing some
Cependant, la granularité d'annulation semble avoir changé en supprimant une lettre à la fois.
[i]typing some words[C-c][u]
Résulte en
typing some word
Je me souviens d'avoir lu quelque chose sur la personnalisation de la granularité d'annulation dans Practical Vim, mais je ne me souviens pas comment la contrôler. Toute aide appréciée!
:help
fichiers à ce sujet ... Voir: Comment déboguer mon fichier vimrc? ... De plus, utiliser<C-c>
pour quitter le mode d'insertion peut avoir des effets secondaires ( voir ceci ) et peut faire partie du problème ... Je suggère d'utiliserEsc
ou<C-[>
( voir ceci )Réponses:
Rompre manuellement la séquence d'annulation
Vous pouvez interrompre manuellement la séquence d'annulation en mode Insertion avec
<C-G>u
. De l'aide :Exemple
Cela vous laissera avec le texte
Répartition des commandes
Solution automatique
Contrôle de niveau d'annulation à grain plus fin
Voici un petit extrait de VimScript qui permet
<C-G>u
de créer des sauts d'annulation lorsque vous commencez à supprimer du texte, et également lorsque vous recommencez à saisir du texte après une suppression.Remarques
Cela fonctionne pour
<BS>
,<C-W>
(supprimer un mot), et<C-U>
(supprimer le début de la ligne). S'il existe d'autres façons de supprimer en mode Insertion, elles peuvent être prises en charge en ajoutant desinoremap
appels supplémentaires à la fin.la source
<C-G>u
, ce qui est déjà trop tard.i
suivi d'une longue phrase suivie d'un retour arrière pour supprimer une partie de ce que j'ai écrit (le tout en mode insertion). Ensuite, je réalise que je n'aurais pas dû revenir en arrière et ce que j'avais écrit était bien. J'annule, mais tout le texte inséré est annulé. Donc, soit je me retrouve avec aucune de la longue phrase, ou la partie qui n'est pas reculée. Il est impossible de récupérer la partie arrière. Existe-t-il un moyen de dire à vim de rompre la séquence d'annulation lors du retour arrière? (Maintenant que je le dis,map
le retour arrière est une option bien sûr).inoremap <CR> <C-G>u<CR>
sorte que chaque annulation soit contenue dans une seule ligne (plus de défaire le paragraphe entier que vous tapiez sans arrêt).