en vim puedo hacer vim --servername foo
y vim --servername foo --remote-silent bar.txt
abrir archivos en una instancia de vim desde varias ventanas de terminal (a través de tmux o lo que sea). ¿Cómo se logra lo mismo en NeoVim?
fuente
en vim puedo hacer vim --servername foo
y vim --servername foo --remote-silent bar.txt
abrir archivos en una instancia de vim desde varias ventanas de terminal (a través de tmux o lo que sea). ¿Cómo se logra lo mismo en NeoVim?
Hasta donde yo sé, vim tiene esta característica porque la GUI vim (gvim) usa el servidor gráfico X. Soy consciente de que no GUI Vim también puede usar el --servername
argumento, pero solo cuando X11 se está ejecutando y también accediendo a él . Por otro lado, neovim no tiene soporte gráfico; por esa razón, no creo que la --servername
opción pueda funcionar (a menos que la opción se hubiera reescrito completamente de otra manera) ya que me parecería extraño que un programa de consola acceda al servidor X11 solo para ese propósito.
:help x11-clientserver
parece confirmarlo: "La comunicación entre el cliente y el servidor pasa por el servidor X. [..] Un Vim sin GUI con acceso a la pantalla X11 (| xterm-clipboard | habilitado), también puede actuar como un servidor de comandos si se da explícitamente un nombre de servidor "...Neovim Remote es un script de Python para controlar los procesos de Neovim. Tiene las opciones de estilo vim --servername y --remote. Esto es lo que uso ahora para mi entorno de trabajo de múltiples terminales.
fuente
Como se mencionó, todas las características del servidor del cliente se eliminaron en Neovim. Esto se debe a que usan la memoria compartida X11 y Neovim eliminó el soporte X11.
Sin embargo, si lo uso
:help --servername
en Neovim termino en la documentación de laserverstart()
función:Esto hará un socket en
/tmp/
; mira:echo v:servername
por el camino. Probablemente sea más útil usar una dirección más determinista (pserverstart('/tmp/nvim-remote')
. Ej ., Aunque probablemente querrá incluir esto en una función, ya que no agregará un número como el de Vim--serverstart
si ya existe).Puede enviar comandos con la API RPC. Por lo que puedo encontrar, no hay forma de enviar comandos a esto con solo Neovim (meh). Deberá instalar uno de los clientes API . Por ejemplo, con el cliente de API Python de referencia (que también es lo que usa el control remoto de Neovim):
Probablemente pueda enviar los mismos bytes con un
echo ... >> /tmp/nvim-remove
comando de shell, pero la API RPC utiliza un protocolo sin texto no trivial ("MessagePack RPC") y averiguar qué bytes enviar exactamente fue un esfuerzo demasiado grande para esta publicación; -)Consulte
:help rpc
los detalles completos sobre la API RPC de Neovim.NB
:help remote.txt
, así como muchos otros elementos de ayuda (comohelp server2client()
y muchos más) todavía existen en Neovim, pero nada de eso funciona. Parece que quien quitó esta característica hizo un trabajo bastante descuidado.fuente
:terminal
. Dada esta información, fue maravillosamente fácil.