La commande pour actualiser un fichier à partir de la version sur 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 je passe une commande dans une succursale, j'aimerais avoir une actualisation de vim.
Lisez la documentation de bufdo
, il devrait faire ce que vous voulez.
La commande :checkt[ime]
Est conçue à cet effet.
Il vous invitera à recharger tous les tampons qui ont changé; si vous souhaitez ignorer l'invite, vous pouvez faire :set autoread
au préalable (vous obtiendrez toujours une invite sur les tampons avec les modifications locales non enregistrées).
Cela évite également le problème de mise en évidence de la syntaxe mentionné par Steven Lu sur la réponse acceptée; :bufdo
Désactive la coloration syntaxique par conception .
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()
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 juste toujours passivement recharger les tampons périmés mais non modifiés, cela semble devoir 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 événements de focus configurés , alors nous pouvons exécuter checktime
chaque fois que nous obtenons le focus comme ceci:
set autoread
autocmd FocusGained * checktime
Cette réponse a également quelques détails intéressants.
Comme @Matthew S l'a mentionné ici https://vi.stackexchange.com/a/462 , vous pouvez utiliser:
:set noconfirm
:bufdo !e
:set confirm