124 votes

Rafraîchir tous les fichiers dans la mémoire tampon à partir du disque dans vim

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

Comment puis-je faire de même pour tous les fichiers de la mémoire tampon ?

Le contexte : J'ai besoin de cela car j'utilise git avec plusieurs branches avec un vim ouvert qui contient un tampon. Lorsque je vérifie une branche, je voudrais que vim se rafraîchisse.

122voto

Paul Fenney Points 357

El :checkt[ime] est conçu dans ce but précis.

Il vous demandera de recharger tous les tampons qui ont été modifiés ; si vous souhaitez ignorer cette demande, vous pouvez effectuer les opérations suivantes :set autoread au préalable (vous obtiendrez toujours une invite sur les tampons contenant des modifications locales non sauvegardées).

Elle permet également d'éviter le problème de la coloration syntaxique mentionné par Steven Lu dans 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

86voto

pmf Points 3796

Lisez la documentation relative à bufdo il devrait faire ce que vous voulez.

35 votes

Ok, très bien, :bufdo e ! va faire ça. Mais il y a un message d'invite Charge (O/N) à chaque fois. Comment puis-je m'en débarrasser ?

22 votes

Utilisez set noconfirm avant d'utiliser le bufdo ( set confirm après à reanable).

1 votes

J'utiliserais bufdo e (sans point d'exclamation) au lieu de bufdo e! car il peut détecter des modifications non sauvegardées là où il ne devrait pas y en avoir, juste pour être sûr.

19voto

Ivanoats Points 1312

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()

7voto

phs Points 5913

De :help autoread :

Lorsqu'il est détecté qu'un fichier a été modifié en dehors de Vim et qu'il n'a pas été modifié dans Vim, il est automatiquement relu. Cette opération n'est pas effectuée lorsque le fichier a été supprimé.

Si, comme moi, vous voulez juste toujours passivement recharger des tampons stables mais non modifiés, alors cela semble pouvoir faire l'affaire.

Cependant, le détail final est quand vim remarque le tampon périmé. Cela peut être forcé avec checktime . Si vous avez mise en place d'événements centraux alors nous pouvons exécuter checktime quand on se concentre comme ça :

set autoread
autocmd FocusGained * checktime

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

1voto

MOHRE Points 608

Comme @Matthew S l'a mentionné ici https://vi.stackexchange.com/a/462 , vous pouvez utiliser :

:set noconfirm
:bufdo !e
:set confirm

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X