¿Es posible utilizar la funcionalidad del servidor de clientes de vim para mantener la configuración sincronizada?


11

Por lo general, tengo varias instancias de vim ejecutándose en la misma máquina. Cuando hago un cambio en mi vimrc puedo simplemente :source ~/.vimrc(con un mapeo fácil o un autocmd). Pero para que todas las instancias en ejecución reflejen el cambio, tengo que ejecutarlo en cada una de ellas por separado. ¿Puedo usar la clientserverfunción para indicar a todas las instancias que vuelvan a cargar mi vimrc?

También me interesarían las soluciones que no utilizo clientserver.

Respuestas:


7

Puede decirle a un servidor Vim que vuelva a cargar el archivo vimrc de esta manera:

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

Y puede obtener una lista de todos los servidores con:

$ vim --serverlist
MARTIN
CARPETSMOKER

Que se puede combinar con un forbucle:

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

Como se trata de una gran cantidad de tipeo, puede incluirlo en un script de shell ~/bin/reload-vimrc; por supuesto, también puedes llamarlo desde Vim:

:!reload-vimrc

Si está ejecutando Linux, y quiere volverse loco, puede usar inotifywatchdesde inotify-tools para monitorear sus archivos vimrc en busca de cambios, y ejecutar esto automáticamente en cada cambio (no probado, ejemplo adaptado de la página de manual)

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

Sin embargo, no recomendaría esto ... Si accidentalmente guarda un archivo con un error de sintaxis, podría bloquear toda su sesión de vim ...


-1

No sé sobre el servidor de clientes, pero dado que dijiste que estabas interesado en otras soluciones, recomendaría investigar este artículo sobre los archivos de puntos de Github.

https://dotfiles.github.io

Obviamente no tiene que usar Github, pero los conceptos son sólidos y parecen ser ampliamente utilizados.


Si bien creo que tener sus dotfiles bajo control de versiones es increíble, estaba preguntando específicamente sobre instancias de vim que se ejecutan en la misma máquina (he actualizado la pregunta).
xthrd

1
-1; Esta respuesta realmente no tiene ninguna relación con la pregunta formulada. La pregunta es sobre volver a cargar vimrc , no administrar vimrc .
Martin Tournoij

La pregunta original anterior a mi respuesta no dejaba claro que estaba hablando de instancias en la misma máquina. En ese momento, mi respuesta respondió a la pregunta.
tgrosinger
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.