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é.

odwl
la source

Réponses:

87

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

pmf
la source
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

Paul Fenney
la source
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()
Ivan
la source
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.

phs
la source