web-dev-qa-db-ja.com

コマンドラインからvimコマンドを実行します

Vimからシェルプログラムを実行する際にSOの質問がたくさんあります。逆にできるかどうかです。

$ vim :BundleInstall

たとえば、Vimを開いて最初の実行時に手動で実行するのではなく、スクリプトの一部として BundleInstall を実行できるようにしますか?これは可能ですか?

49
jvc26

現在、構文が変更されており、行は次のようになっていることに注意してください( @ sheharyar に従って):

vim +PluginInstall +qall

後世では、以前は正しい行は次のとおりでした。

vim +BundleInstall +qall

私以外の誰かが探しているはずです!注:これは、vundleの Github README にあります。

85
jvc26

私はこれがあなたが必要なものだと思う:

Vimmanページを確認する必要があります:

-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 readmeファイルで説明されているように、次のようにvimを起動した場合:

    vim +BundleInstall +qall

これにより、vimを開かずにすべてのバンドルオプションがインストールされます。そして、明確にするために、 vim documentation から:

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

それが役に立てば幸い!

23
Daniel Noguchi

より一般的なソリューションを探している人のために、別の答えを追加します。

vim +commandは、1つのVimコマンドを実行しますが、シェルから複数のVimコマンドを実行します。代わりに、ExモードでVimを起動し、Hereドキュメントでコマンドを提供します。これは、私が書いたスクリプトの例です。ファイル内のパターンを検索し、その前にテキストを挿入します。

    ex --noplugin +1 "$v_file" <<-END 
            set maxmempattern=8000
            /^\s*\<endmodule\>/i

            FIXME   \`ifdef XXX_INCLUDE_API
              \`include "${api_file}"
            \`endif

            .
            w
            q
    END
2
Steve K

もっと複雑なものはどうですか?

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

それが完全に正しいかどうかはわかりませんが、私にはうまくいきます。ありがとう@ jvc26

2
graceman9

する

vim --cmd BundleInstall

あなたがしたいことをしますか?

0
Colin 't Hart