从命令行运行vim命令

从vim运行shell程序有很多问题。 我想知道的是,如果有可能做相反的事情 – 即

$ vim :BundleInstall 

例如,让我运行BundleInstall作为脚本的一部分,而不必打开Vim并在第一次运行时手动运行它? 这可能吗?

注意,现在语法已经改变了,行应该读取(按照@sheharyar ):

 vim +PluginInstall +qall 

以前,对于后人来说,正确的路线是:

 vim +BundleInstall +qall 

除了我以外,任何人都要看! 注意:这是在Github的README for vundle。

我认为这是你所需要的:

您应该检查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. 

要么:

 --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. 

这真的取决于你想要做什么。 另外,如vundle自述文件中所述,如果你像这样启动vim:

  vim +BundleInstall +qall 

这将在不打开vim的情况下安装所有的bundle选项。 只是为了澄清,从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. 

希望能帮助到你!

对于那些正在寻找更一般性解决scheme的人来说,我会再添加一个答案。

vim +command可以运行一个Vim命令,但是从shell运行几个Vim命令。 相反,在Ex模式下启动Vim并用Here文件提供命令。 这是我写的脚本的一个例子。 它在文件中search一个模式并在其之前插入一些文本。

  ex --noplugin +1 "$v_file" <<-END set maxmempattern=8000 /^\s*\<endmodule\>/i FIXME \`ifdef XXX_INCLUDE_API \`include "${api_file}" \`endif . w q END 

是否

 vim --cmd BundleInstall 

做你想做的?

如何更复杂的东西?

 vim "+set ff=unix" "+wq" node_modules/less-monitor/bin/less-monitor 

不知道这是否完全正确,但对我有用。 谢谢@ jvc26