Actualiser tous les fichiers dans la mémoire tampon à partir du disque dans vim


124

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

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

Contexte: J'en ai besoin parce que j'utilise git avec plusieurs branches avec un vim ouvert qui contient un tampon. Lorsque j'achète une succursale, j'aimerais que vim soit actualisé.

Réponses:


87

Lisez la documentation pour bufdo, il doit faire ce que vous voulez.


33
ok super donc,: bufdo e! Fera cela. Mais il y a une charge rapide (Y / N) à chaque fois. Comment puis-je m'en débarrasser?
odwl

21
À utiliser set noconfirmavant d'utiliser la bufdocommande ( set confirmensuite à réanimer).
pmf

22
bufdo elaisse curieusement tous les tampons non mis en évidence par la syntaxe
Steven Lu

4
@StevenLu Vérifiez la réponse de PaulFenney ci-dessous.
DBedrenko

12
Pourquoi les gens votent-ils pour cela? Ce n'est pas seulement une réponse, mais la direction dans laquelle cela vous mène signifie que votre coloration syntaxique est désactivée après le rechargement.
Dmitry Minkovsky

120

La :checkt[ime]commande est conçue dans ce but précis.

Il vous demandera de recharger tous les tampons qui ont changé; si vous souhaitez ignorer l'invite, vous pouvez le faire à l' :set autoreadavance (vous obtiendrez toujours une invite sur les tampons avec des modifications locales non enregistrées).

Cela évite également le problème de coloration syntaxique mentionné par Steven Lu sur la réponse acceptée; :bufdodé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


19

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

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

nmap <leader>gr call PullAndRefresh()

7

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 n'est pas fait.

Si, comme moi, vous voulez toujours recharger passivement des tampons obsolètes mais non modifiés, alors cela semble devoir faire le travail.

Cependant, le dernier détail est quand vim remarque le tampon périmé. Cela peut être forcé avec checktime. Si vous avez mis en place des événements de focus , nous pouvons les exécuter checktimechaque fois que nous gagnons en concentration comme ceci:

set autoread
autocmd FocusGained * checktime

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


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.