È 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.