Chciałbym móc uruchomić emacsa na jednym komputerze:
server $ emacs --daemon
A następnie połącz się z nim z innego:
local $ emacsclient -c server
czy to możliwe? Jeśli tak to jak?
Chciałbym móc uruchomić emacsa na jednym komputerze:
server $ emacs --daemon
A następnie połącz się z nim z innego:
local $ emacsclient -c server
czy to możliwe? Jeśli tak to jak?
Odpowiedzi:
Nie można używać programu emacsclient do łączenia się z instancją Emacs działającą na komputerze zdalnym. Ta koncepcja klient-serwer jest związana z procesami (lokalnymi), a nie węzłami sieci. Możesz jednak użyć różnych technologii sieciowych, aby zalogować się na komputerze zdalnym, podłączyć się do działającego tam serwera emacs i wyświetlić lokalnie ekran emacsclient. W zależności od używanego systemu operacyjnego połączenie sieciowe może odbywać się za pośrednictwem SSH (terminal / X-Forwarding), VNC, RDP itp.
AKTUALIZACJA :
Jak niektórzy zauważyli, emacsclient faktycznie ma opcję połączenia z serwerem za pośrednictwem TCP. Jednak emacsclient nigdy nie miał być używany zdalnie, opcja gniazda TCP jest wymagana dla kompatybilności z systemami innymi niż UNIX (tj. Systemami operacyjnymi, w których gniazda domenowe UNIX są niedostępne, takie jak Windows).
Prawdopodobnie nie to, o co prosiłeś, ale zakładając, że masz konfigurację ssh z X-forwardingiem, możesz uruchomić emacsclient na serwerze i przekazać go do zdalnego WYŚWIETLANIA. (Uwaga: kod wpisany bezpośrednio w formularzu internetowym)
local> ssh server -f emacsclient -c --display=$DISPLAY
To może nie być to, co chcesz, ale na wszelki wypadek, czy może ci to pomóc.
Zwykle pracuję na maszynie wirtualnej uruchomionej za pomocą Vagrant, mam ~/.emacs.d
zsynchronizowany katalog między moją maszyną (lokalną) a maszyną wirtualną (zdalną), umieszczając w Vagrantfile
pliku:
config.vm.synced_folder "~/.emacs.d", "/home/vagrant/.emacs.d"
Ponadto moja konfiguracja Emacsa automatycznie uruchamia serwer podczas uruchamiania:
(require 'server)
(setq server-use-tcp t
server-socket-dir "~/.emacs.d/server")
(unless (server-running-p)
(server-start))
Kiedy więc uruchamiam serwer Emacs na maszynie wirtualnej, mogę się z nim połączyć w następujący sposób:
ssh -Y -i ~/.vagrant.d/insecure_private_key "<virtual machine hostname>" 'emacsclient -c -f ~/.emacs.d/server/server'
nazwa hosta maszyny wirtualnej to nazwa hosta maszyny wirtualnej, którą skonfigurowałem w moim ~ / .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
Uwaga: Przed uruchomieniem serwera Emacs na maszynie wirtualnej sprawdzam, czy ~/.emacs.d/server/server
plik nie jest obecny (jeśli tak, po prostu go usuwam), ponieważ w przeciwnym razie nie zadziała.
.ssh/config
pliku. Musisz tylko określić Host
. Wątpliwości możesz użyć danych wyjściowych polecenia: vagrant ssh-config
do ustawienia ~/.ssh/config
pliku.
Automatycznie otwieraj zdalne pliki w lokalnych emacach
Miałem sukces z pierwszym rozwiązaniem. Drugi wydaje się prostszy, jeszcze go wypróbowałem.