Annuler est agréable à avoir dans Vim. Mais parfois, à un bon moment connu, je veux effacer mon historique d'annulation - pour pouvoir l'utiliser u
pour annuler des modifications individuelles, mais seulement à un certain point. (Par exemple, cela pourrait être la dernière fois que je me suis engagé.)
Une façon d'y parvenir serait de fermer et de rouvrir le fichier - l'historique d'annulation commence à ce point. Mais c'est un problème.
Dans le passé, j'ai accompli cela avec :edit!
. Mais dans Vim 7.3, cela ne supprime pas l'historique d'annulation.
Existe-t-il une autre façon de procéder, à part fermer le fichier?
git checkout -f file
ouhg rollback file
?u
pour annuler des modifications individuelles, mais pas au-delà du point où je me suis engagé pour la dernière fois. Exactement comme si, chaque fois que je m'engageais, je fermais le fichier et le rouvrais. C'est ce:edit!
que l'on faisait - c'était comme fermer le fichier et le rouvrir. Cela n'a PAS à être lié à un point de validation, c'est juste le moment où je le veux le plus souvent.Réponses:
devrait faire ce que vous demandez.
la source
L'ancien: éditez! comportement dans une ligne:
la source
:h :exe
,:h :bar
,:h :set-args
,:h 'ul'
et:h :edit!
.La fonction de Benoit n'a pas fonctionné pour moi, mais j'ai trouvé quelque chose de similaire dans le manuel de vim, ici:
http://www.polarhome.com/vim/manual/v73/undo.html#undo-remarks
Je l'ai giflé dans une fonction, ajoutée à mon vimrc et cela semble bien fonctionner sur vim 7.3:
Cela peut être utilisé avec
:ClearUndo
.la source
Probablement:
(
'ul'
est alias pour'undolevels'
).la source
:edit!
. Pour commencer, j'ai créé une fonction appelée ClearUndos () avec les commandes que vous avez répertoriées, mais l'appeler ne semble rien faire, alors que faire les commandes individuellement le fait ...:command -nargs=0 Reset let old_ul=&ul | set ul=-1 | e! | let &ul = old_ul | unlet old_ul
|
dans un contenu de commande. Créez ensuite une fonction qui fait ce que j'ai dit dans ma réponse et définissez la commande surcall thefunction()
."Effacer l'historique des annulations (: w pour effacer le fichier d'annulation s'il est présenté)
command! -bar UndoClear exe "set ul=-1 | m-1 | let &ul=" . &ul
m-1
-à- dire qui ne change pas réellement votre texte.'undofile'
est activé,:w
pour effacer le fichier d'annulation ou une chaîne similaireUndoClear|w
.la source
Dans un script:
Utilisez ensuite
:Reset
pour l'appeler.la source
set ul=
commande affecte uniquement une variable locale jusqu'à la fin du script, et puisque nous la modifions avant la fin du script, elle n'affecte jamais l'environnement? Avez-vous testé cette fonction et l'avez-elle fonctionnée - ce qui signifie, y a-t-il quelque chose d'étrange dans ma configuration?