Me gustaría poder ejecutar emacs en una computadora:
server $ emacs --daemon
Y luego conéctese desde otro:
local $ emacsclient -c server
es posible? ¿Si es así, cómo?
Me gustaría poder ejecutar emacs en una computadora:
server $ emacs --daemon
Y luego conéctese desde otro:
local $ emacsclient -c server
es posible? ¿Si es así, cómo?
Respuestas:
No puede usar emacsclient para conectarse a una instancia de Emacs que se ejecuta en una computadora remota. Este concepto cliente-servidor está relacionado con procesos (locales), no con nodos de red. Sin embargo, puede usar varias tecnologías de red para iniciar sesión en la computadora remota, conectarse a un servidor emacs que se ejecuta allí y mostrar la pantalla del cliente emacs localmente. Dependiendo del sistema operativo que se utilice, la conexión en red podría realizarse a través de SSH (terminal / X-Forwarding), VNC, RDP, etc.
ACTUALIZACIÓN :
Como señalaron algunas personas, emacsclient realmente tiene una opción para conectarse al servidor a través de TCP. Sin embargo, emacsclient nunca fue diseñado para usarse de manera remota, la opción de socket TCP es necesaria para la compatibilidad con sistemas que no son UNIX (es decir, sistemas operativos donde los sockets de dominio UNIX no están disponibles, como Windows).
Probablemente no sea lo que solicitó, pero suponiendo que tenga una configuración ssh con X-forwarding, podría iniciar emacsclient en el servidor y reenviarlo a DISPLAY remoto. (Descargo de responsabilidad: código escrito directamente en el formulario web)
local> ssh server -f emacsclient -c --display=$DISPLAY
Esto puede no ser lo que desea, pero por si acaso, vea si puede ayudarlo de alguna manera.
Normalmente trabajo dentro de una máquina virtual arrancada con Vagrant, tengo mi ~/.emacs.d
directorio sincronizado entre mi máquina (local) y la máquina virtual (remota) poniendo lo siguiente en el Vagrantfile
archivo:
config.vm.synced_folder "~/.emacs.d", "/home/vagrant/.emacs.d"
Además, mi configuración de Emacs inicia automáticamente un servidor al inicio:
(require 'server)
(setq server-use-tcp t
server-socket-dir "~/.emacs.d/server")
(unless (server-running-p)
(server-start))
Entonces, cuando inicio un servidor Emacs dentro de la máquina virtual, puedo conectarme a él con lo siguiente:
ssh -Y -i ~/.vagrant.d/insecure_private_key "<virtual machine hostname>" 'emacsclient -c -f ~/.emacs.d/server/server'
nombre de host de máquina virtual es el nombre de host de la máquina virtual que configuré en mi ~ / .ssh / config:
Host <virtual machine hostname>
HostName 127.0.0.1
User vagrant
Port 2222
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
PasswordAuthentication no
IdentityFile /home/anler/.vagrant.d/insecure_private_key
IdentitiesOnly yes
LogLevel FATAL
ForwardAgent yes
Nota: Antes de iniciar el servidor Emacs dentro de la máquina virtual, verifico que el ~/.emacs.d/server/server
archivo no esté presente (si es que lo elimino) porque de lo contrario no funcionará.
.ssh/config
archivo. Solo necesita especificar el Host
. En caso de duda, puede utilizar la salida del comando: vagrant ssh-config
para configurar su ~/.ssh/config
archivo.
Abrir automáticamente archivos remotos en emacs locales
He tenido éxito con la primera solución. El segundo parece ser más simple, todavía tengo que probarlo.