Comment puis-je obliger vim à conserver son historique d'annulation?

36

Si j'édite deux fichiers avec vim, le passage à l'autre fichier (: bnext,: bprev) semble supprimer l'historique d'annulation du fichier ouvert. Si vous appuyez sur la touche 'u', vous obtenez le message "Déjà, modification la plus ancienne".

Par exemple:

  1. vim testfile1 testfile2
  2. ajouter des trucs à testfile1
  3. :w
  4. :bn
  5. :bp
  6. u
  7. eep! ne peut pas annuler!

Existe-t-il un moyen de conserver cet historique pour les tampons non visibles?

Jeremy Kerr
la source
cela devrait-il être en superutilisateur ou stackoverflow?
Ressu
@Ressu - bon point, comment on dit? Meta question publiée: meta.ubuntu.stackexchange.com/questions/47/…
Jeremy Kerr le
En fonction du résultat de cette méta question, je suis susceptible de le supprimer.
Jeremy Kerr

Réponses:

42

La dernière version de vim (7.3) comporte une annulation persistante. Vous pouvez ainsi apporter une modification, fermer vim complètement (même arrêter et redémarrer), redémarrer vim et annuler. Dans votre .vimrc:

" tell it to use an undo file
set undofile
" set a directory to store the undo history
set undodir=/home/yourname/.vimundo/
frabjous
la source
11
Notez que vous devez d'abord créer le répertoire, vim ne le fait pas automatiquement. Les fichiers annulés sont sauvegardés en utilisant le chemin du système de fichiers (en même temps que le fichier). Si vous êtes dans /home/peter, alors l'édition .bashrccréera le fichier /home/peter/.vimundo/%home%peter%.bashrc.
Lekensteyn
19

On dirait que ça va le faire:

:set hidden

(en .vimrc)

Jeremy Kerr
la source
1

Vous pouvez utiliser les fenêtres .
"vim -o testfile1 testfile2" - ouvre les fichiers dans une fenêtre séparée.
": sp nomfichier" - divise et ouvre "nomfichier".
": vsp filename" - division verticale et ouvrir "filename".
"Ctrl + w + flèche" - Change la fenêtre d'affichage.

yevhene
la source
Je préfère ne pas garder de tampon visible en permanence pour chaque fichier; il n’est pas rare d’avoir plus de 20 fichiers ouverts en même temps.
Jeremy Kerr