回答:
vim(1)
manページから:
+ {コマンド}
-c {コマンド}
{command}は、最初のファイルが読み取られた後に実行されます。{command}はExコマンドとして解釈されます。{command}にスペースが含まれる場合は、二重引用符で囲む必要があります(使用するシェルによって異なります)。例:Vim "+ set si" main.c
注:最大10個の「+」または「-c」コマンドを使用できます。
次のようにコマンドを実行できます。
vim -E -c BundleInstall -c q
ターミナルでVimウィンドウを開かないようにします。
注:私の最初の答えには-s
、別のアプリケーションに必要なオプションが含まれていましたが、BundleInstall
コマンドを定義したプラグインのソースを含むVimの初期化の多くを妨げたため、ここでは間違っていました。
-s
特定のメッセージを禁止するだけではなく、初期化も禁止することを忘れていたため、BundleInstallの定義が提供されていませんでした。それを修正する1つの方法は最初の前にこのようなオプションを追加するでしょう-c
:--cmd 'runtime plugin/bundle.vim'
。そのファイル名に合わせて編集します。をご覧ください:help -s-ex
。
上記のvim固有のレシピは正しい方法ですが、autoexpectのようなより一般的なアプローチをいつでも使用できます。
手動で起動したかのようにvimを完全にロードする必要がある場合、これは機能します。
vim -c "autocmd! CursorHold * <commands to run>"
たとえば:map
、シェルからの出力をファイルにリダイレクトしたいのですが、vim-airlineがタブライン(開いているすべてのバッファ名を表示する上部の行)を表示した後にのみ作成するマッピングをキャプチャしたかったのです。これは非同期で、単に-c
ファイルへのリダイレクトを実行するだけでは、マッピングを作成する時間は与えられませんでした。より良い方法があるかもしれませんが、これはうまくいきます。特に(0.1秒)に既にupdatetime
設定されているため100
、CursorHold
イベントが発生するまでの時間に影響します。デフォルトでは、vimは4秒に設定します。
vim -c "autocmd! CursorHold * set nomore | redir! > mapNew | map | redir END | q"
vim +BundleInstall +qall!
。