J'aimerais pouvoir utiliser emacs sur un seul ordinateur:
server $ emacs --daemon
Et puis connectez-vous à partir d'un autre:
local $ emacsclient -c server
Est-ce possible? Si c'est le cas, comment?
J'aimerais pouvoir utiliser emacs sur un seul ordinateur:
server $ emacs --daemon
Et puis connectez-vous à partir d'un autre:
local $ emacsclient -c server
Est-ce possible? Si c'est le cas, comment?
Réponses:
Vous ne pouvez pas utiliser emacsclient pour vous connecter à une instance Emacs s'exécutant sur un ordinateur distant. Ce concept client-serveur est lié aux processus (locaux) et non aux nœuds de réseau. Cependant, vous pouvez utiliser différentes technologies réseau pour vous connecter à l'ordinateur distant, vous connecter à un serveur emacs qui y est installé et afficher l'écran de emacsclient localement. Selon le système d'exploitation utilisé, la mise en réseau peut être réalisée via SSH (terminal / X-Forwarding), VNC, RDP, etc.
UPDATE :
Comme certaines personnes l’ont souligné, emacsclient a en fait une option pour se connecter au serveur via TCP. Cependant, emacsclient n'a jamais été conçu pour être utilisé à distance. L'option socket TCP est requise pour la compatibilité avec les systèmes non UNIX (c'est-à-dire les systèmes d'exploitation où les sockets de domaine UNIX ne sont pas disponibles, comme Windows).
Probablement pas ce que vous avez demandé, mais en supposant que vous avez configuré ssh avec X-forwarding, vous pouvez démarrer emacsclient sur le serveur et le transférer vers DISPLAY à distance. (Avertissement: code saisi directement dans le formulaire Web)
local> ssh server -f emacsclient -c --display=$DISPLAY
Ce n'est peut-être pas ce que vous voulez, mais juste au cas où cela pourrait vous aider.
Je travaille habituellement dans une machine virtuelle démarrée avec Vagrant. Mon ~/.emacs.d
répertoire est synchronisé entre ma machine (locale) et la machine virtuelle (distante), en mettant les informations suivantes dans le Vagrantfile
fichier:
config.vm.synced_folder "~/.emacs.d", "/home/vagrant/.emacs.d"
De plus, ma configuration Emacs démarre automatiquement un serveur au démarrage:
(require 'server)
(setq server-use-tcp t
server-socket-dir "~/.emacs.d/server")
(unless (server-running-p)
(server-start))
Ainsi, lorsque je lance un serveur Emacs dans la machine virtuelle, je peux me connecter à celui-ci avec les éléments suivants:
ssh -Y -i ~/.vagrant.d/insecure_private_key "<virtual machine hostname>" 'emacsclient -c -f ~/.emacs.d/server/server'
virtual machine hostname est le nom d'hôte de la machine virtuelle que j'ai configurée dans mon ~ / .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
Note: Avant de lancer le serveur Emacs à l'intérieur de la machine virtuelle, je vérifie que le ~/.emacs.d/server/server
fichier n'est pas présent (si c'est le cas, je le supprime), car sinon il ne fonctionnerait pas.
.ssh/config
fichier. Il vous suffit de spécifier le Host
. En cas de doute, vous pouvez utiliser le résultat de la commande: vagrant ssh-config
pour définir votre ~/.ssh/config
fichier.
Ouvrir automatiquement les fichiers distants dans emacs local
J'ai eu du succès avec la première solution. La seconde semble être plus simple, je n'ai pas encore essayé.