Mi piacerebbe poter eseguire emacs su un computer:
server $ emacs --daemon
E poi connettiti ad esso da un altro:
local $ emacsclient -c server
È possibile? Se é cosi, come?
Mi piacerebbe poter eseguire emacs su un computer:
server $ emacs --daemon
E poi connettiti ad esso da un altro:
local $ emacsclient -c server
È possibile? Se é cosi, come?
Risposte:
Emacsclient non può essere utilizzato per connettersi a un'istanza di Emacs in esecuzione su un computer remoto. Questo concetto client-server è correlato a processi (locali), non a nodi di rete. Tuttavia, è possibile utilizzare varie tecnologie di rete per accedere al computer remoto, collegarsi a un server emacs in esecuzione lì e visualizzare lo schermo dell'emacsclient localmente. A seconda del sistema operativo utilizzato, la rete potrebbe essere eseguita tramite SSH (terminale / X-Forwarding), VNC, RDP ecc.
AGGIORNAMENTO :
come alcuni hanno sottolineato, emacsclient ha in realtà un'opzione per connettersi al server tramite TCP. Tuttavia, emacsclient non è mai stato pensato per essere utilizzato in remoto, l'opzione socket TCP è necessaria per la compatibilità con sistemi non UNIX (ovvero sistemi operativi in cui i socket di dominio UNIX non sono disponibili, come Windows).
Probabilmente non quello che hai richiesto ma supponendo che tu abbia una configurazione ssh con X-forwarding, potresti avviare emacsclient sul server e inoltrarlo a DISPLAY remoto. (Dichiarazione di non responsabilità: codice digitato direttamente nel modulo web)
local> ssh server -f emacsclient -c --display=$DISPLAY
Questo potrebbe non essere quello che vuoi ma, nel caso, vedi se può aiutarti in qualche modo.
Di solito lavoro all'interno di una macchina virtuale avviata con Vagrant, ho la mia ~/.emacs.d
directory sincronizzata tra la mia macchina (locale) e la macchina virtuale (remota) inserendo quanto segue nel Vagrantfile
file:
config.vm.synced_folder "~/.emacs.d", "/home/vagrant/.emacs.d"
Inoltre, la mia configurazione di Emacs avvia automaticamente un server all'avvio:
(require 'server)
(setq server-use-tcp t
server-socket-dir "~/.emacs.d/server")
(unless (server-running-p)
(server-start))
Quindi, quando lancio un server Emacs all'interno della macchina virtuale, posso collegarmi ad esso con il seguente:
ssh -Y -i ~/.vagrant.d/insecure_private_key "<virtual machine hostname>" 'emacsclient -c -f ~/.emacs.d/server/server'
il nome host della macchina virtuale è il nome host della macchina virtuale che ho configurato nel mio ~ / .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: prima di avviare il server Emacs all'interno della macchina virtuale, controllo che il ~/.emacs.d/server/server
file non sia presente (in tal caso lo rimuovo) perché altrimenti non funzionerà.
.ssh/config
file. Hai solo bisogno di specificare il Host
. Nel dubbio puoi usare l'output del comando: vagrant ssh-config
per impostare il tuo ~/.ssh/config
file.
Apri automaticamente file remoti in emacs locali
Ho avuto successo con la prima soluzione. Il secondo sembra essere più semplice, devo ancora provarlo.