Ceci est un workarou nd I utilisé Vim avant la version 7.3:
" :e usually clears undo history, so we don't really do :e any more.
" Instead we delete the contents of the buffer, then read the file in, which
" is an operation we can undo. We must delete the top (empty) line also.
:map :e<Enter> :%d<Enter>:r<Enter>:0<Enter>dd
Quand vous voyez le message d'avertissement, vous devez frapper o
k au lieu de l
OAD, puis effectuez la charge vous-même: :e<Enter>
Il y a deux inconvénients (bien que j'ai trouvé le compromis acceptable):
- Vous perdez la ligne sur laquelle vous étiez. Votre curseur reste assis en haut du fichier. Vim continue de penser que le tampon n'est pas synchronisé avec le fichier, donc lors de la prochaine sauvegarde, vous devrez peut-être faire
:w!
au lieu du :w
normal, et vous devrez appuyer sur y
pour confirmer l'écrasement.
Modifier: Il peut y avoir a workaround for the second problem.
Edit: Le premier problème pourrait être résolu avec un peu plus de scripts (voir :h line
.)
Pourquoi pas, si? Si vim croit que le fichier contient un 'a', alors certains écrivent un' b' dans le fichier, pourquoi Vim ne pourrait-il pas annuler ce 'b'? –
Et ...A moins que je ne mette en place un schéma compliqué à commettre après chaque changement de Vim ... je ne vois pas comment le contrôle de source pourrait aider. –
Et si quelqu'un supprime ou déplace le fichier? Pourquoi Vim ne devrait-il pas être capable de le restaurer ou de le déplacer? ... Ce n'est pas aussi simple. Vim utilise un principe de tampon, c'est-à-dire qu'il enregistre le contenu d'un fichier dans un tampon pendant la phase d'édition. Je crois que c'est pourquoi il vous donne une option pour charger le fichier à nouveau (et pourquoi il ne verrouille pas le fichier). @David (2ème commentaire) - oui. – Rook