Actualiser tous les fichiers du tampon du disque dans vim

La commande pour actualiser un fichier à partir de la version sur le disque est la suivante :e!

Comment puis-je faire la même chose pour tous les fichiers du tampon?

Contexte: J’en ai besoin car j’utilise git avec plusieurs twigs avec une vim ouverte contenant un tampon. Lorsque je vérifie une succursale, je voudrais avoir vim refresh.

Lisez la documentation de bufdo , elle devrait faire ce que vous voulez.

La commande :checkt[ime] est conçue à cet effet.

Il vous demandera de recharger les tampons qui ont changé; Si vous souhaitez ignorer l’invite, vous pouvez le faire :set autoread au préalable (vous obtiendrez toujours une invite sur les tampons avec les modifications locales non enregistrées).

Il évite également le problème de la coloration syntaxique mentionné par Steven Lu sur la réponse acceptée; :bufdo désactive la coloration syntaxique par conception .

Trouvé via: http://vim.1045645.n5.nabble.com/Bug-report-bufdo-e-breaking-syntax-highlighting-on-displayed-buffers-tp1209995p1209998.html

Voici ce que j’ai fini par mettre dans mon .vimrc:

 fun! PullAndRefresh() set noconfirm !git pull bufdo e! set confirm endfun nmap gr call PullAndRefresh() 

De :help autoread :

Lorsqu’un fichier a été détecté comme ayant été modifié en dehors de Vim et qu’il n’a pas été modifié à l’intérieur de Vim, relisez-le automatiquement. Lorsque le fichier a été supprimé, cela ne se fait pas.

Si, comme moi, vous voulez simplement recharger passivement les buffers obsolètes mais non modifiés, cela semble devoir vous permettre de faire le travail.

Cependant, le détail final est lorsque vim remarque le tampon périmé. Cela peut être forcé avec checktime . Si vous avez des événements de focus configurés , alors nous pouvons exécuter des checktime chaque fois que nous obtenons le focus comme ceci:

 set autoread autocmd FocusGained * checktime 

Cette réponse a également des détails intéressants.