2012-10-11 2 views
42

Есть много вопросов о запуске программ оболочки из vim. Что мне интересно, если это возможно сделать обратное - то естьЗапустить команду vim из командной строки

$ vim :BundleInstall 

, например, чтобы позволить мне работать BundleInstall как часть сценария, вместо того, чтобы открыть Vim и запустить его вручную на первый Бег? Это возможно?

ответ

73

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

vim +PluginInstall +qall 

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

vim +BundleInstall +qall 

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

+0

Это прямо из vundle README здесь: https://github.com/gmarik/vundle – Conner

+1

Да - выяснилось, что после получения этой работы на основе manpage – jvc26

+0

Удивительно проницательный. Мне нравится, как нам больше не нужно «man vim» и прокручивать вниз две страницы благодаря SO. – peth

0

ли

vim --cmd BundleInstall 

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

+0

Вам необходимо выполнить команду exec после загрузки плагина. используйте опцию '-c' – kev

20

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

Вы должны проверить ВИМ человек страницы:

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

Надеется, что это помогает!

2

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

vim +command работает для запуска одной команды Vim, но для запуска нескольких команд Vim из оболочки. Вместо этого запустите Vim в Ex-режиме и подайте команды с документом 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

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

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

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

+0

Я не могу понять, является ли это новый вопрос (который затем следует задавать отдельно) или новый ответ. –

+0

Это просто пример того, как использовать решение с помощью команды с несколькими словами, например '+ set ff = unix' и с' + wq' вместо '+ qall'. В моем случае мне нужно обновить файл. Я написал это как ответ только потому, что не могу опубликовать комментарий (требуется 50+ репутации) – graceman9

+0

* рак вылечен * спасибо ... –

 Смежные вопросы

  • Нет связанных вопросов^_^