Il y a beaucoup de SO questions sur l'exécution des programmes Shell à partir de vim. Ce que je me demande, c'est s'il est possible de faire l'inverse - c'est-à-dire.
$ vim :BundleInstall
par exemple, pour me permettre d'exécuter BundleInstall dans le cadre d'un script, plutôt que d'avoir à ouvrir Vim et à l'exécuter manuellement lors de la première exécution? Est-ce possible?
Remarque, maintenant la syntaxe a changé, et la ligne doit se lire (selon @ sheharyar ):
vim +PluginInstall +qall
Pour la postérité, auparavant, la ligne correcte était:
vim +BundleInstall +qall
Si quelqu'un d'autre que moi cherche! Remarque: c'est dans le Github README pour vundle.
Je pense que c'est ce dont vous avez besoin:
Vous devriez vérifier la page de manuel de vim :
-c {command} {command} will be executed after the first file has been read. {command} is interpreted as an Ex command. If the {command} contains spaces it must be enclosed in double quotes (this depends on the Shell that is used). Example: Vim "+set si" main.c Note: You can use up to 10 "+" or "-c" commands.
ou:
--cmd {command} Like using "-c", but the command is executed just before processing any vimrc file. You can use up to 10 of these commands, independently from "-c" commands.
Cela dépend vraiment de ce que vous voulez faire. En outre, comme décrit dans le fichier readme vundle , si vous lancez vim comme ceci:
vim +BundleInstall +qall
Cela installera toutes les options de bundle sans ouvrir vim. Et juste pour des éclaircissements, de la documentation vim :
:qall This stands for "quit all". If any of the windows contain changes, Vim will not exit. The cursor will automatically be positioned in a window with changes. You can then either use ":write" to save the changes, or ":quit!" to throw them away.
J'espère que ça aide!
J'ajouterai une autre réponse pour les personnes qui recherchent une solution plus générale.
vim +command
fonctionne pour exécuter une commande Vim mais pour exécuter plusieurs commandes Vim à partir d'un shell. Au lieu de cela, démarrez Vim en mode Ex et fournissez des commandes avec un document Here. Ceci est un exemple d'un script que j'ai écrit. Il recherche un motif dans le fichier et insère du texte avant lui.
ex --noplugin +1 "$v_file" <<-END
set maxmempattern=8000
/^\s*\<endmodule\>/i
FIXME \`ifdef XXX_INCLUDE_API
\`include "${api_file}"
\`endif
.
w
q
END
Que diriez-vous de quelque chose de plus complexe?
vim "+set ff=unix" "+wq" node_modules/less-monitor/bin/less-monitor
Je ne sais pas si c'est totalement correct, mais cela fonctionne pour moi. Merci @ jvc26
Est-ce que
vim --cmd BundleInstall
faites ce que vous voulez?