To może być głupie pytanie, ale proszę o wyrozumiałość.
Automatyzuję niektóre z typowych czynności, które robię podczas konfigurowania nowego środowiska pracy i chciałbym zautomatyzować polecenie Vima :BundleInstall
(do instalowania wszystkich moich wtyczek Vima).
Czy można uruchomić to z powłoki?
Alternatywnie, czy można uruchomić skrypt Vima, wykonać go :BundleInstall
, poczekać, aż zakończy się i wyjść?
Dzięki.
vim +BundleInstall +qall!
.Możesz wykonać swoje polecenie w następujący sposób:
co pozwoli uniknąć otwierania okna Vima w twoim terminalu.
Uwaga: Moja pierwsza odpowiedź zawierała
-s
opcję, której potrzebowałem dla innej aplikacji, ale była tutaj niepoprawna, ponieważ zapobiegała znacznej części intimizacji Vima, w tym pozyskiwaniu wtyczki, która zdefiniowałaBundleInstall
polecenie.źródło
-s
nie tylko hamuje niektóre wiadomości - ale także hamuje inicjalizację - więc definicja BundleInstall nie była pozyskiwana. Jednym ze sposobów, aby naprawić to byłoby dodać opcję tak przed pierwszym-c
:--cmd 'runtime plugin/bundle.vim'
. Edytuj tę nazwę pliku, aby dopasować. Zobaczyć:help -s-ex
.Chociaż powyższy przepis vim jest właściwym sposobem, aby to zrobić, zawsze możesz zastosować bardziej ogólne podejście, takie jak autoexpect .
źródło
W sytuacjach, gdy potrzebujesz pełnego załadowania vima, tak jakbyś uruchomił go ręcznie, działa to:
Na przykład chciałem przekierować wyjście
:map
do pliku z powłoki, ale chciałem uchwycić mapowanie, które vim-linie lotnicze tworzy dopiero po wyświetleniu jego tabulatora (linia u góry pokazująca wszystkie otwarte nazwy buforów). Ponieważ wydaje się, że to robi to asynchronicznie po prostu uruchomienie-c
przekierowania do pliku nie dawało mu czasu na mapowanie. Może być lepszy sposób, ale to działa dla mnie, zwłaszcza, żeupdatetime
ustawiłem już100
(0,1 sekundy), co wpływa na to, jak długoCursorHold
zdarzenie zostanie uruchomione . Domyślnie vim ustawia go na 4 sekundy.źródło