Eu gostaria de poder executar o emacs em um computador:
server $ emacs --daemon
E conecte-se a ele de outro:
local $ emacsclient -c server
Isso é possível? Se sim, como?
Eu gostaria de poder executar o emacs em um computador:
server $ emacs --daemon
E conecte-se a ele de outro:
local $ emacsclient -c server
Isso é possível? Se sim, como?
Respostas:
Você não pode usar o emacsclient para se conectar a uma instância do Emacs em execução em um computador remoto. Esse conceito cliente-servidor está relacionado a processos (locais), não a nós da rede. No entanto, você pode usar várias tecnologias de rede para efetuar login no computador remoto, conectar-se a um servidor emacs em execução no local e exibir a tela do emacsclient localmente. Dependendo do sistema operacional usado, a rede pode ser feita via SSH (terminal / X-Forwarding), VNC, RDP etc.
ATUALIZAÇÃO :
Como algumas pessoas apontaram, o emacsclient realmente tem uma opção para se conectar ao servidor via TCP. No entanto, o emacsclient nunca foi projetado para ser usado remotamente, a opção de soquete TCP é necessária para compatibilidade com sistemas não UNIX (ou seja, sistemas operacionais nos quais soquetes de domínio UNIX não estão disponíveis, como o Windows).
Provavelmente não é o que você pediu, mas supondo que você tenha uma configuração ssh com o encaminhamento X, você pode iniciar o emacsclient no servidor e encaminhá-lo para o DISPLAY remoto. (Aviso: código digitado diretamente no formulário da web)
local> ssh server -f emacsclient -c --display=$DISPLAY
Pode não ser o que você deseja, mas apenas para ver se pode ajudá-lo.
Normalmente, trabalho em uma máquina virtual inicializada com o Vagrant, tenho meu ~/.emacs.d
diretório sincronizado entre minha máquina (local) e a máquina virtual (remota), colocando o seguinte no Vagrantfile
arquivo:
config.vm.synced_folder "~/.emacs.d", "/home/vagrant/.emacs.d"
Além disso, minha configuração do Emacs inicia automaticamente um servidor na inicialização:
(require 'server)
(setq server-use-tcp t
server-socket-dir "~/.emacs.d/server")
(unless (server-running-p)
(server-start))
Portanto, quando inicio um servidor Emacs dentro da máquina virtual, posso conectar-me a ele com o seguinte:
ssh -Y -i ~/.vagrant.d/insecure_private_key "<virtual machine hostname>" 'emacsclient -c -f ~/.emacs.d/server/server'
nome da máquina virtual é o nome da máquina virtual que eu configurei no meu ~ / .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 o servidor Emacs dentro da máquina virtual, verifico se o ~/.emacs.d/server/server
arquivo não está presente (se for apenas removê-lo) porque, caso contrário, não funcionará.
.ssh/config
. Você só precisa especificar o Host
. Na dúvida, você pode usar a saída do comando: vagrant ssh-config
para definir seu ~/.ssh/config
arquivo.
Abrir automaticamente arquivos remotos no emacs local
Eu tive sucesso com a primeira solução. O segundo parece ser mais simples, ainda estou para experimentar.