É possível usar a funcionalidade de servidor de clientes do vim para manter as configurações sincronizadas?

11

Normalmente, tenho várias instâncias do vim em execução na mesma máquina. Quando faço uma alteração no meu vimrc, posso apenas :source ~/.vimrc(com um mapeamento fácil ou um autocmd). Mas, para que todas as instâncias em execução reflitam a mudança, preciso executá-las separadamente em cada uma delas. Posso usar o clientserverrecurso para informar todas as instâncias para recarregar meu vimrc?

Eu também estaria interessado em soluções que não usam clientserver.

xthrd
fonte

Respostas:

7

Você pode dizer a um servidor Vim para recarregar o arquivo vimrc da seguinte maneira:

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

E você pode obter uma lista de todos os servidores com:

$ vim --serverlist
MARTIN
CARPETSMOKER

Que pode ser combinado com um forloop:

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

Já que é muita digitação, você pode colocá-lo em um shell script ~/bin/reload-vimrc; é claro que você também pode chamá-lo no Vim:

:!reload-vimrc

Se você estiver executando o Linux, e quiser ficar realmente louco, você poderia usar inotifywatcha partir inotify-ferramentas para monitorar seu arquivo vimrc (s) para as mudanças, e executar isso automaticamente a cada mudança (não testado, exemplo adaptado de manpage)

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

Porém, eu não recomendaria isso ... Se você salvar acidentalmente um arquivo com um erro de sintaxe, poderá iniciar toda a sua sessão vim ...

Martin Tournoij
fonte
-1

Eu não sei sobre o servidor de clientes, mas desde que você disse que estava interessado em outras soluções, eu recomendaria analisar este artigo sobre os dotfiles do Github.

https://dotfiles.github.io

Você obviamente não precisa usar o Github, mas os conceitos são sólidos e parecem ser amplamente utilizados.

tgrosinger
fonte
Embora eu ache impressionante ter seus dotfiles sob controle de versão, eu estava especificamente perguntando sobre instâncias do vim em execução na mesma máquina (atualizei a pergunta).
xthrd
1
-1; Esta resposta realmente não tem qualquer influência sobre a pergunta. A questão é recarregar o vimrc , não gerenciar o vimrc .
Martin Tournoij
A pergunta original anterior à minha resposta não deixou claro que ele estava falando sobre instâncias na mesma máquina. Na época, minha resposta abordou a questão.
tgrosinger