Czy jest możliwe użycie funkcji klienta serwera vima do synchronizacji ustawień?

11

Zwykle mam wiele instancji vima działających na tym samym komputerze. Kiedy dokonam zmiany w moim vimrc, mogę to zrobić :source ~/.vimrc(za pomocą łatwego mapowania lub autocmd). Ale aby wszystkie działające instancje odzwierciedlały zmianę, muszę uruchomić ją w każdym z nich osobno. Czy mogę użyć tej clientserverfunkcji, aby poinformować wszystkie instancje o ponownym załadowaniu mojego vimrc?

Byłbym także zainteresowany rozwiązaniami, które nie wykorzystują clientserver.

Xth
źródło

Odpowiedzi:

7

Możesz powiedzieć serwerowi Vim, aby ponownie załadował plik vimrc w następujący sposób:

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

I możesz uzyskać listę wszystkich serwerów za pomocą:

$ vim --serverlist
MARTIN
CARPETSMOKER

Które można połączyć z forpętlą:

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

Ponieważ jest to dużo pisania, możesz umieścić go w skrypcie powłoki ~/bin/reload-vimrc; możesz oczywiście również zadzwonić z poziomu Vima:

:!reload-vimrc

Jeśli używasz systemu Linux, a chcesz uzyskać naprawdę szalony, można skorzystać inotifywatchz inotify-narzędzi do monitorowania plik vimrc (ów) do zmian i wykonać to automatycznie przy każdej zmianie (niesprawdzone, przykład zaadaptowane z podręcznika)

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

Nie poleciłbym tego jednak ... Jeśli przypadkowo zapiszesz plik z błędem składni, możesz przerobić całą sesję vima ...

Martin Tournoij
źródło
-1

Nie wiem o kliencie klienta, ale ponieważ powiedziałeś, że interesują Cię inne rozwiązania, polecam przejrzenie tego artykułu o plikach dot z Github.

https://dotfiles.github.io

Oczywiście nie musisz używać Github, ale koncepcje są solidne i wydają się być szeroko stosowane.

tgrosinger
źródło
Chociaż uważam, że posiadanie plików dot pod kontrolą wersji jest niesamowite, pytałem konkretnie o instancje vima działającego na tym samym komputerze (zaktualizowałem pytanie).
xth
1
-1; Ta odpowiedź tak naprawdę nie ma wpływu na zadane pytanie. Pytanie dotyczy przeładowania vimrc , a nie zarządzania vimrc .
Martin Tournoij,
Oryginalne pytanie przed moją odpowiedzią nie wyjaśniało, że mówił o instancjach na tej samej maszynie. W tym czasie moja odpowiedź dotyczyła pytania.
tgrosinger