Я хотел бы иметь возможность запускать emacs на одном компьютере:
server $ emacs --daemon
А потом подключитесь к нему из другого:
local $ emacsclient -c server
Это возможно? Если так, то как?
Я хотел бы иметь возможность запускать emacs на одном компьютере:
server $ emacs --daemon
А потом подключитесь к нему из другого:
local $ emacsclient -c server
Это возможно? Если так, то как?
Ответы:
Вы не можете использовать emacsclient для подключения к экземпляру Emacs, запущенному на удаленном компьютере. Эта концепция клиент-сервер связана с (локальными) процессами, а не с сетевыми узлами. Однако вы можете использовать различные сетевые технологии для входа на удаленный компьютер, подключения к работающему на нем серверу emacs и локального отображения экрана emacsclient. В зависимости от используемой операционной системы работа в сети может осуществляться через SSH (терминал / X-Forwarding), VNC, RDP и т. Д.
ОБНОВЛЕНИЕ :
Как отмечали некоторые люди, emacsclient действительно имеет возможность подключиться к серверу через TCP. Тем не менее, emacsclient никогда не предназначался для удаленного использования, опция сокета TCP необходима для совместимости с не-UNIX системами (то есть операционными системами, где сокеты домена UNIX недоступны, как Windows).
Возможно, это не то, о чем вы просили, но при условии, что вы настроили ssh с X-forwarding, вы можете запустить emacsclient на сервере и переслать его на удаленный DISPLAY. (Отказ от ответственности: код, введенный непосредственно в веб-форму)
local> ssh server -f emacsclient -c --display=$DISPLAY
Это может быть не то, что вы хотите, но на всякий случай посмотрите, может ли это как-то вам помочь.
Я обычно работаю в виртуальной машине, загруженной с помощью Vagrant, мой ~/.emacs.d
каталог синхронизируется между моей машиной (локальной) и виртуальной машиной (удаленной), помещая в Vagrantfile
файл следующее:
config.vm.synced_folder "~/.emacs.d", "/home/vagrant/.emacs.d"
Кроме того, моя конфигурация Emacs автоматически запускает сервер при запуске:
(require 'server)
(setq server-use-tcp t
server-socket-dir "~/.emacs.d/server")
(unless (server-running-p)
(server-start))
Поэтому, когда я запускаю сервер Emacs внутри виртуальной машины, я могу подключиться к нему следующим образом:
ssh -Y -i ~/.vagrant.d/insecure_private_key "<virtual machine hostname>" 'emacsclient -c -f ~/.emacs.d/server/server'
имя хоста виртуальной машины - это имя хоста виртуальной машины, которую я настроил в моей ~ / .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
Примечание: перед запуском сервера Emacs внутри виртуальной машины я проверяю, что ~/.emacs.d/server/server
файл отсутствует (если я просто удаляю его), потому что иначе он не будет работать.
.ssh/config
файле. Вам просто нужно указать Host
. В случае сомнений вы можете использовать вывод команды: vagrant ssh-config
установить свой ~/.ssh/config
файл.
Автоматически открывать удаленные файлы в локальном Emacs
У меня был успех с первым решением. Второй, кажется, проще, я еще не попробовал.