È possibile utilizzare la funzionalità client server di vim per mantenere sincronizzate le impostazioni?


11

Di solito ho più istanze di VIM in esecuzione sulla stessa macchina. Quando :source ~/.vimrcapporto una modifica al mio vimrc posso semplicemente (con una mappatura semplice o un autocmd). Ma per far sì che tutte le istanze in esecuzione riflettano il cambiamento, devo eseguirlo separatamente in ciascuna di esse. Posso usare la clientserverfunzione per dire a tutte le istanze di ricaricare il mio vimrc?

Sarei anche interessato a soluzioni che non usano clientserver.

Risposte:


7

Puoi dire a un server Vim di ricaricare il file vimrc in questo modo:

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

E puoi ottenere un elenco di tutti i server con:

$ vim --serverlist
MARTIN
CARPETSMOKER

Che può essere combinato con un forloop:

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

Dal momento che si tratta di un sacco di battitura, è possibile inserirlo in uno script di shell ~/bin/reload-vimrc; ovviamente puoi anche chiamarlo da Vim:

:!reload-vimrc

Se stai usando Linux e vuoi diventare davvero pazzo, potresti usare inotifywatchda inotify-tools per monitorare i tuoi file vimrc per le modifiche ed eseguirlo automaticamente su ogni modifica (non testato, esempio adattato dalla manpage)

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

Non lo consiglierei, però ... Se si salva accidentalmente un file con un errore di sintassi, è possibile interrompere tutta la sessione di VIM ...


-1

Non conosco il clienterver, ma dal momento che hai detto che eri interessato ad altre soluzioni, consiglierei di leggere questo articolo sui dotfile di Github.

https://dotfiles.github.io

Ovviamente non devi usare Github, ma i concetti sono solidi e sembrano essere ampiamente utilizzati.


Mentre penso che avere i tuoi dotfile sotto il controllo della versione sia fantastico, stavo chiedendo in particolare le istanze di vim in esecuzione sullo stesso computer (ho aggiornato la domanda).
X

1
-1; Questa risposta non ha alcuna influenza sulla domanda posta. La domanda riguarda il ricaricare vimrc , non gestire vimrc .
Martin Tournoij,

La domanda originale prima della mia risposta non chiariva che stava parlando di istanze sulla stessa macchina. All'epoca la mia risposta rispondeva alla domanda.
tgrosinger,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.