2 votes

Détection du changement externe du fichier vim de script

Lorsque vous modifiez un fichier en dehors de vim, vim le remarque et vous demande de prendre une décision : doit-il recharger le fichier et ignorer toutes les modifications que vous avez faites ? doit-il conserver vos modifications ?

Souvent, il suffit de simplement relire le buffer. En général, cela se produit :

  • Ouvrir un fichier dans vim.
  • Modifier le fichier, enregistrer.
  • Changer de branches dans git.
  • Vim détecte que le fichier a été modifié.

À ce stade, je veux vraiment juste que le fichier soit rechargé, car il est enregistré. (Si le buffer n'est pas enregistré, la boîte de dialogue normale est ok.) Cliquer/taper sur "Charger le fichier" est source d'erreurs si j'ai un buffer en cours qui n'est pas enregistré. Voir ce message uniquement pour les buffers modifiés serait bien plus sûr.

Quelque chose qui fait exactement ce que je veux serait super, mais j'ai vraiment d'autres attentes aussi (différencier un buffer modifié serait cool) : pouvez-vous mettre en script ce qui se passe lorsqu'un fichier change sur le disque ?

1voto

jopa Points 800

Si :set autoread ne suffit pas, vous pouvez en effet scripter le comportement; à cette occasion, l'événement FileChangedShell est déclenché, et vous pouvez vous y connecter et influencer le comportement. Voir :help FileChangedShell pour plus de détails.

0voto

yogibear Points 2304

Il semble que l'option autoread de vim ferait ce que vous recherchez. Vous pouvez l'activer en ajoutant ce qui suit à votre fichier vimrc ou en le tapant dans une session vim :

:set autoread

Vous pouvez obtenir plus d'informations sur l'option en utilisant :

:help 'autoread'

Pour des informations sur la visualisation des différences entre ce qui se trouve dans le tampon vim et ce qui est sur le disque, exécutez :

:help :DiffOrig

Cela contient du code que vous pouvez mettre dans votre fichier vimrc pour définir une commande :DiffOrig qui fera exactement cela.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X