Это может быть глупый вопрос, но терпите меня.
Я автоматизирую некоторые из обычных вещей, которые я делаю при настройке новой рабочей среды, и хотел бы автоматизировать команду Vim :BundleInstall
(для установки всех моих плагинов Vim).
Можно ли запустить это из оболочки?
В качестве альтернативы, можно ли запустить скрипт Vim, выполнить :BundleInstall
, дождаться его завершения и выйти?
Благодарю.
vim +BundleInstall +qall!
.Вы можете выполнить свою команду следующим образом:
что позволит избежать открытия окна Vim в вашем терминале.
Примечание: мой первый ответ включал
-s
опцию, которая мне была нужна для другого приложения, но здесь она была неправильной, потому что она предотвращала большую часть инициализации Vim, включая поиск плагина, определяющегоBundleInstall
команду.источник
-s
это больше, чем просто запрещает определенные сообщения - это также запрещает инициализации - поэтому определение BundleInstall не было получено. Один из способов исправить это было бы добавить опцию , как это до того , как первый-c
:--cmd 'runtime plugin/bundle.vim'
. Отредактируйте это имя файла, чтобы удовлетворить. См:help -s-ex
.Хотя приведенный выше специальный рецепт vim является правильным способом сделать это, вы всегда можете использовать более общий подход, такой как autoexpect .
источник
В ситуациях, когда вам нужно, чтобы vim полностью загрузился, как если бы вы запустили его вручную, это работает:
Например, я хотел перенаправить вывод
:map
в файл из оболочки, но я хотел захватить отображение, которое vim-Airlines создает только после того, как оно отображает свою табулированную строку (строка вверху, показывающая все открытые имена буферов). это асинхронно, простое выполнение-c
перенаправления в файл не дает ему времени на сопоставления. Возможно, есть лучший способ, но это работает для меня, тем более, что я ужеupdatetime
установил100
(0,1 секунды), который влияет на то, как долго будет происходитьCursorHold
событие. По умолчанию vim устанавливает его на 4 секунды.источник