Answers:
从vim(1)
手册页:
+ {command}
-c {命令}
在读取第一个文件之后,将执行{command}。{command}被解释为一个Ex命令。如果{command}包含空格,则必须用双引号将其引起来(这取决于所使用的shell)。示例:Vim“ + set si” main.c
注意:最多可以使用10个“ +”或“ -c”命令。
您可以像这样执行命令:
vim -E -c BundleInstall -c q
这样可以避免在终端中打开Vim窗口。
注意:我的第一个答案包括了-s
我需要用于另一个应用程序的选项,但是在这里是不正确的,因为它阻止了Vim的许多初始化,包括寻找定义BundleInstall
命令的插件。
-s
它不仅抑制了某些消息-还抑制了初始化-因此并没有提供BundleInstall的定义。解决该问题的一种方法是在第一个选项之前添加这样的选项-c
:--cmd 'runtime plugin/bundle.vim'
。编辑该文件名以适合。请参阅:help -s-ex
。
尽管上面特定于vim的配方是正确的方法,但是您始终可以使用更通用的方法,例如autoexpect。
对于需要像手动启动一样完全加载vim的情况,可以这样做:
vim -c "autocmd! CursorHold * <commands to run>"
例如,我想将:map
shell 的输出重定向到一个文件,但是我想捕获vim-airline仅在显示其标签线(顶部的行显示所有缓冲区名称已打开)之后创建的映射。因为它似乎可以这种异步方式,仅运行-c
重定向到文件并没有给它时间进行映射。可能有更好的方法,但这对我有用,尤其是因为我已经updatetime
设置为100
(0.1秒),这会影响CursorHold
事件触发的时间。默认情况下,vim将其设置为4秒。
vim -c "autocmd! CursorHold * set nomore | redir! > mapNew | map | redir END | q"
vim +BundleInstall +qall!
。