Выполнить команду vim из командной строки
Есть много вопросов SO о запуске программ оболочки из vim. Мне интересно, возможно ли сделать обратное - i.e.
$ vim :BundleInstall
например, чтобы позволить мне запускать BundleInstall как часть script, вместо того, чтобы открывать Vim и запускать его вручную при первом запуске? Возможно ли это?
Ответы
Ответ 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
делать то, что вы хотите?