Vim - Déclencher l'action \ script lors de la sauvegarde \ écriture?


14

Cela pourrait être mieux pour les super utilisateurs, mais je pense qu'en tant qu'outil du commerce, ce pourrait être un meilleur sujet pour ici. Je trouve souvent lors de l'édition dans vim que je quitte, exécute un script que je teste, puis reviens dans vim (oui je me rends compte que je peux utiliser la commande:! Pour exécuter les choses à partir de vim) Je me demandais simplement s'il y avait un façon d'accrocher quelque chose à exécuter lorsque le fichier est enregistré (: w)?

Réponses:



19

Voir :he :autocmdet:he BufWritePost

La ligne ressemblerait à ceci:

:autocmd BufWritePost /path/to/file/or/pattern !command <afile>

Si la <afile>chose ne fonctionne pas, utilisez %:p.


1

J'ai obtenu la partie "revenir à vim", mais je ne sais pas comment frapper la commande ": w" elle-même (ce qui serait très pratique, car c'est assez réflexif pour moi)

w | silent execute "! myscript" | redraw!

Je pense que cela peut aussi être mieux pour le superutilisateur.


1

C'est une auto-promotion flagrante, mais j'ai écrit un plugin Vim qui déclenchera l'exécution de certains scripts shell après des autocmdévénements Vim spécifiques . Par exemple, un script nommé .bufwritepost.vimhook.shserait exécuté (de manière synchrone) chaque fois que la BufWritePostcommande est exécutée . Vous pouvez ensuite facilement inclure la logique arbitraire que vous souhaitez pour faire des choses dans ce script. Le plugin suppose des conventions de dénomination spécifiques de ces scripts et prend également en charge les scripts "hook" qui se déclenchent uniquement sur les fichiers correspondant à certains noms ou ayant certaines extensions. Et bien sûr, vous êtes libre de choisir n'importe quel autocmdévénement que vous souhaitez, même si j'ai trouvé la BufWritePostplupart de mes cas d'utilisation.

Détails complets: https://github.com/ahw/vim-hooks

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.