Sie können Befehle extern an vim senden, wenn Sie ... ausführen.
Vim-Server
Zum Beispiel:
vim --servername vim
veranlasst vim, einen Server mit dem Namen "vim" zu starten. Wenn Sie es zweimal aufrufen, wird der neue Server "vim1", dreimal "vim2" usw. genannt. Möglicherweise möchten Sie einen Alias für diesen Befehl erstellen.
Anhand des Fenstertitels können Sie erkennen, welchen Server eine bestimmte Instanz benannt hat. Wenn du siehst:
[Kein Name] + - VIM3
Der Servername ist "VIM3" ("vim3" bezieht sich auf dieselbe Instanz). Beachten Sie Folgendes, wenn Sie Folgendes sehen:
[Kein Name] + - VIM
Das bedeutet nicht unbedingt, dass es einen Server namens "VIM" hat. Sie können sicherstellen, dass der Server vorhanden ist, indem Sie die Servernamen wie folgt auflisten:
vim --serverlist
Dennoch stellt sich die Frage speziell nur für "VIM". Wenn Sie "GVIM" oder einen anderen Namen mit einer angehängten Nummer sehen, bedeutet dies, dass es sich um einen Server handelt.
Wie benutze ich den Client?
Nun können Sie auf Ihre Frage alle speichern und eine bestimmte vim-Instanz beenden, indem Sie Folgendes ausführen:
vim --servername vim2 --remote-send $'\e:wqa\n'
Wir verwenden die Escape-Taste, um in den normalen Modus zurückzukehren, falls Sie sich im Einfüge- oder Befehlsmodus befinden. Sie können auch etwas anderes tun :wqa
, aber das scheint mir am besten geeignet zu sein, da die Auslagerungsdateien der Puffer, die nicht gespeichert werden konnten, erhalten bleiben (weil sie neu sind und keinen Dateinamen usw. haben).
Wenn Sie dies für alle Instanzen wie hier tun möchten, können Sie die Serverliste wie folgt durchlaufen:
for instance in $(vim --serverlist); do
vim --servername $instance --remote-send $'\e:wqa\n'
done
Wenn es Ihnen aus irgendeinem Grund nicht gefällt --remote-send
, können Sie stattdessen Folgendes verwenden, --remote-expr
was den Vorteil hat, dass der Client das Ergebnis oder den Fehler ausgibt, den er möglicherweise verursacht hat:
$ vim --servername vim2 --remote-expr 'execute("wqa")'
E141: No file name for buffer 1
Beachten Sie, dass für die Verwendung der Serverfunktionalität von Vim Vim mit dieser +clientserver
Option erstellt wurde.