Ist es möglich, die Clientserver-Funktionalität von vim zu verwenden, um die Einstellungen synchron zu halten?

11

Normalerweise laufen mehrere Instanzen von vim auf demselben Computer. Wenn ich eine Änderung an meinem vimrc vornehme, kann ich dies einfach :source ~/.vimrc(mit einem einfachen Mapping oder einem Autocmd). Aber damit alle laufenden Instanzen die Änderung widerspiegeln, muss ich sie in jeder von ihnen separat ausführen. Kann ich die clientserverFunktion verwenden, um alle Instanzen anzuweisen, mein vimrc neu zu laden?

Ich würde mich auch für Lösungen interessieren, die nicht verwendet werden clientserver.

xthrd
quelle

Antworten:

7

Sie können einen Vim-Server anweisen, die vimrc-Datei wie folgt neu zu laden:

$ vim --servername MARTIN --remote-send '<Esc>:source $MYVIMRC<CR>' 

Und Sie können eine Liste aller Server erhalten mit:

$ vim --serverlist
MARTIN
CARPETSMOKER

Was mit einer forSchleife kombiniert werden kann :

$ for s in $(vim --serverlist); do vim --servername "$s" --remote-send '<Esc>:source $MYVIMRC<CR>'; done

Da das viel Tippen ist, können Sie es in ein Shell-Skript einfügen ~/bin/reload-vimrc; Sie können es natürlich auch in Vim aufrufen:

:!reload-vimrc

Wenn Sie Linux laufen lassen , und wollen wirklich verrückt zu bekommen, Sie nutzen könnten inotifywatchvon inotify-Tool Ihre vimrc (e) für Änderungen zu überwachen, und führen diese automatisch bei jeder Änderung (ungetestet, angepasst Beispiel von manpage)

$ inotifywatch -v -e modify -t 60 -r ~/.vimrc ~/.vim

Ich würde dies jedoch nicht empfehlen ... Wenn Sie versehentlich eine Datei mit einem Syntaxfehler speichern, können Sie Ihre gesamte vim-Sitzung blockieren ...

Martin Tournoij
quelle
-1

Ich weiß nichts über Clientserver, aber da Sie sagten, dass Sie an anderen Lösungen interessiert sind, würde ich empfehlen, diesen Artikel über Dotfiles von Github zu lesen.

https://dotfiles.github.io

Sie müssen Github natürlich nicht verwenden, aber die Konzepte sind solide und scheinen weit verbreitet zu sein.

tgrosinger
quelle
Obwohl ich es für fantastisch halte, Ihre Punktedateien unter Versionskontrolle zu haben, habe ich speziell nach Instanzen von vim gefragt, die auf demselben Computer ausgeführt werden (ich habe die Frage aktualisiert).
xthrd
1
-1; Diese Antwort hat keinen wirklichen Einfluss auf die gestellte Frage. Die Frage betrifft das Neuladen von vimrc und nicht das Verwalten von vimrc .
Martin Tournoij
Die ursprüngliche Frage vor meiner Antwort machte nicht klar, dass er über Instanzen auf demselben Computer sprach. Zu der Zeit ging meine Antwort auf die Frage ein.
Tgrosinger