C'est peut-être une question stupide, mais restez avec moi.
J'automatise certaines des tâches habituelles que je fais lors de la configuration d'un nouvel environnement de travail et je voudrais automatiser la commande Vim :BundleInstall
(pour installer tous mes plugins Vim).
Est-il possible de l'exécuter à partir du shell?
Sinon, est-il possible de faire exécuter le script Vim, de l'exécuter :BundleInstall
, d'attendre qu'il se termine et de quitter?
Merci.
vim +BundleInstall +qall!
.Vous pouvez exécuter votre commande comme ceci:
ce qui évitera d'ouvrir une fenêtre Vim dans votre terminal.
Remarque: Ma première réponse incluait l'
-s
option dont j'avais besoin pour une autre application mais qui était incorrecte ici car elle empêchait une grande partie de l'initialisation de Vim, y compris l'approvisionnement du plugin qui définissait laBundleInstall
commande.la source
-s
fait plus qu'inhiber certains messages - il inhibe également les initialisations - de sorte que la définition de BundleInstall n'était pas fournie. Une façon de résoudre ce problème serait d'ajouter une option comme celui - ci avant la première-c
:--cmd 'runtime plugin/bundle.vim'
. Modifiez ce nom de fichier à votre convenance. Tu vois:help -s-ex
.Bien que la recette spécifique à vim ci-dessus soit la bonne façon de le faire, vous pouvez toujours utiliser une approche plus générale comme autoexpect .
la source
Pour les situations où vous avez besoin que vim soit complètement chargé comme si vous l'aviez démarré manuellement, cela fonctionne:
Par exemple, je voulais rediriger la sortie de
:map
vers un fichier à partir du shell, mais je voulais capturer le mappage que vim- airlines crée uniquement après avoir affiché sa tabline (ligne en haut montrant tous les noms de buffers ouverts.) Parce que cela semble faire cela de manière asynchrone, l'exécution d'une-c
redirection vers un fichier ne lui donnait pas le temps de faire les mappages. Il pourrait y avoir une meilleure façon, mais cela fonctionne pour moi, d'autant plus que j'ai déjàupdatetime
réglé sur100
(0,1 seconde), ce qui affecte la durée avant leCursorHold
déclenchement de l' événement. Par défaut, vim la définit sur 4 secondes.la source