Sé que Vim permite un modo de servidor cliente ( :h clientserver
): es posible convertirlo en un servidor que obtendrá algunos comandos y los ejecutará y como un cliente que enviará los comandos al servidor.
Entiendo cómo funciona, pero no puedo imaginar un uso práctico de esta función: ¿en qué casos es útil y qué flujo de trabajo se puede crear con esta función?
Entonces mi pregunta es simple: ¿Cuál es el uso del modo de servidor cliente de Vim?
(Vuelvo a señalar que mi pregunta no es sobre cómo hacerlo funcionar o cómo funciona, sino por qué usarlo).
clientserver
statox
fuente
fuente
Respuestas:
Antes de la función reciente de canal / trabajo de Vim 7.4, la función cliente-servidor era la única forma de hacer una compilación de fondo decente, sin ninguna dependencia de Python. Comenzamos la compilación como un trabajo en segundo plano, y cuando termina, notifica de nuevo a vim, gracias al canal cliente-servidor, que ha terminado.
También se usa indirectamente por "complementos" como pyclewn para integrar un depurador en vim. En realidad, pyclewn usa la función + netbeans (que se construye sobre el servidor + clientes). Otros proyectos notables utilizan esta interfaz de netbeans para integrar vim con un IDE - vea
:h netbeans-intro
.También es utilizado por algunos complementos de pruebas como vimrunner para ejecutar pruebas en Vim desde la línea de comandos. Lo uso para probar mis complementos en travis.
También recuerdo sincronizar mis clics en la interfaz xdvi con mi código fuente LaTeX gracias a + clientserver.
fuente
Mi uso de esto es un poco más simplista (y quizás común) que el de Luc Hermitte.
Si inicia una instancia de gvim con esto compilado (y lo es, y lo ha estado durante mucho tiempo, en, por ejemplo, las principales distribuciones de Linux como Fedora y Debian), se inicia en modo servidor. Hice hincapié en "gvim" porque lo que estoy a punto de describir no parece aplicarse a una
vim
instancia singular en un terminal GUI (aunque supongo que podría serlo si usa el parámetro adecuadamente).De todos modos, puede abrir cualquier archivo desde cualquier lugar en esa instancia de gvim con
gvim --remote [file path]
(sin--servername
especificar). Soy fanático de esto porque no navego mucho por el sistema de archivos directamente con vim; en su lugar, uso un explorador de archivos ortodoxo (comandante de medianoche), o mejor dicho, montones de ellos se abren en diferentes ubicaciones, ya quemc
es liviano y permite que varios diseños de esquemas de color simplifiquen la diferenciación entre ellos (por lo que tiendo a tener dos o tres abiertos por separado pestañas en al menos un terminal GUI). Sin embargo, creo que el mismo principio se aplicará a cualquier explorador de archivos que le permita alguna forma de tecla de acceso rápido personalizada con la que pueda asociarsegvim --remote %f
. Enmc
Lo tengo en el menú de usuario, por lo que F2 + e y el archivo resaltado / seleccionado se envía a la instancia de gvim.Esto mejora un poco: si abre una segunda instancia de gvim, por ejemplo, en el monitor n. ° 2 del mismo escritorio, o en un escritorio separado, y tal vez un esquema de colores diferente en ese, y esta vez darle un explícito
--servername foo
, puede enviar archivos a esa instancia en su lugar con:Algo que puede ser útil o no dependiendo del alcance de lo que está haciendo, etc.
fuente
less
, que es instantáneo y uno tecla para salir) y posiblemente enviarlos a aplicaciones que no sean vim que también tengan un modo remoto como este (muchas cosas lo hacen ahora, incluidos otros "editores" que a veces uso para dejar pestañas apiladas de encabezados para ver, y también navegadores web) . Dicho de otra manera, diría que navegar por los fs con vim parece una solución alternativa para no usarmc
y--remote
;)Desarrollo embebido. Muchas veces, en el desarrollo integrado, tiene un zócalo IP, pero espacio limitado en el disco duro local, o no hay memoria no volátil, o cualquier otra cantidad de cosas. Puede iniciar un servidor en la placa incrustada, y luego ingresarlo en su computadora de desarrollo y tener su configuración y etiquetas configuradas localmente.
fuente
Escribí mi tesis de maestría usando Vim, LaTeX y BibTeX. Para administrar mis referencias BibTeX, utilicé un programa llamado JabRef . JabRef tiene una característica pequeña y ordenada donde puede conectarlo a una instancia del servidor Vim, y luego puede "empujar" la referencia BibTeX de JabRef al documento LaTeX que está editando en Vim.
fuente
Mi flujo de trabajo es similar a lo que dijo Ricitos de Oro en su respuesta. Uso la
:terminal
función de vim8 en combinación con la--remote
opción. Mantengo el diseño de 2 ventanas en vim. Código en la ventana izquierda y terminal a la derecha. Uso la ventana derecha (terminal) para ejecutar compilaciones, navegar por el sistema de archivos y abrir archivos en la instancia actual de vim (desde el terminal). Este flujo me permite operar con muy poca participación del mouse.Yo uso gvim y icewm (cualquier administrador de ventanas debería hacer)
Iniciar una instancia de gvim
Dentro de gvim, terminal abierto en división vertical
En la ventana de terminal dividida
Puede crear alias para estos comandos largos en su .zshrc / .bashrc y acortarlos a su gusto.
Con este flujo de trabajo, rara vez salgo de mi instancia de gvim y rara vez uso el mouse.
fuente