Dies mag eine dumme Frage sein, aber ertrage sie mit mir.
Ich automatisiere einige der üblichen Dinge, die ich beim Einrichten einer neuen Arbeitsumgebung mache, und möchte den Vim-Befehl automatisieren :BundleInstall
(zum Installieren aller meiner Vim-Plugins).
Ist es möglich, dies von der Shell aus auszuführen?
Ist es alternativ möglich, das Skript Vim ausführen zu lassen :BundleInstall
, auszuführen , zu warten, bis es beendet ist, und zu beenden?
Vielen Dank.
vim +BundleInstall +qall!
.Sie können Ihren Befehl folgendermaßen ausführen:
Dadurch wird vermieden, dass ein Vim-Fenster in Ihrem Terminal geöffnet wird.
Hinweis: Meine erste Antwort enthielt die
-s
Option, die ich für eine andere Anwendung benötigt hatte, die hier jedoch falsch war, da sie einen Großteil der Vial-Initialisierung verhinderte, einschließlich der Beschaffung des Plugins, das denBundleInstall
Befehl definierte .quelle
-s
dies mehr als nur bestimmte Nachrichten hemmt - es verhindert auch die Initialisierung -, sodass die Definition von BundleInstall nicht bezogen wurde. Eine Möglichkeit, dies zu beheben, besteht darin, vor dem ersten eine Option wie diese hinzuzufügen-c
:--cmd 'runtime plugin/bundle.vim'
. Bearbeiten Sie den Dateinamen entsprechend. Siehe:help -s-ex
.Während das vim-spezifische Rezept oben der richtige Weg ist, können Sie immer einen allgemeineren Ansatz wie Autoexpect verwenden .
quelle
In Situationen, in denen vim vollständig geladen sein muss, als ob Sie es manuell gestartet hätten, funktioniert dies wie folgt:
Zum Beispiel wollte ich die Ausgabe
:map
von der Shell in eine Datei umleiten , aber ich wollte das Mapping erfassen, das vim-airline erst erstellt, nachdem die Tabline angezeigt wurde (Zeile oben zeigt alle geöffneten Buffernamen). Weil es zu funktionieren scheint Das asynchrone Ausführen einer-c
Umleitung zu einer Datei ließ keine Zeit, um die Zuordnungen vorzunehmen. Es könnte ein besserer Weg geben, aber das funktioniert für mich, zumal ich bereitsupdatetime
eingestellt100
(0,1 Sekunden), die bis in dem , wie lange wirktCursorHold
Ereignis ausgelöst wird . Standardmäßig legt vim den Wert auf 4 Sekunden fest.quelle