Подтвердить что ты не робот

Выполнить команду vim из командной строки

Есть много вопросов SO о запуске программ оболочки из vim. Мне интересно, возможно ли сделать обратное - i.e.

$ vim :BundleInstall

например, чтобы позволить мне запускать BundleInstall как часть script, вместо того, чтобы открывать Vim и запускать его вручную при первом запуске? Возможно ли это?

4b9b3361

Ответ 1

Обратите внимание, что теперь синтаксис изменился, и строка должна прочитать (согласно @sheharyar):

vim +PluginInstall +qall

Для потомков ранее правильная строка была:

vim +BundleInstall +qall

Если кто-нибудь, кроме меня, смотрит! Примечание: это в Github README для vundle.

Ответ 2

Я думаю, что это то, что вам нужно:

Вы должны проверить 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. И только для пояснения, из документации 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.

Надеюсь, что это поможет!

Ответ 3

Я добавлю еще один ответ для людей, которые ищут более общее решение.

vim +command работает для запуска одной команды Vim, но для запуска нескольких команд Vim из оболочки. Вместо этого запустите Vim в Ex-режиме и подайте команды с документом Here. Это пример из script, который я написал. Он ищет шаблон в файле и вставляет в него некоторый текст.

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

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

            .
            w
            q
    END

Ответ 4

Как насчет чего-то более сложного?

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

Не уверен, что это абсолютно правильно, но это работает для меня. Спасибо @jvc26

Ответ 5

ли

vim --cmd BundleInstall

делать то, что вы хотите?