Я хотів би мати можливість запускати 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-переадресації, ви можете запустити 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
Я мав успіх з першим рішенням. Друга, здається, простіша, я ще спробую це випробувати.