从命令行运行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