Bir bilgisayarda emacs çalıştırabilmek isterim:
server $ emacs --daemon
Ve sonra başka birinden ona bağlan:
local $ emacsclient -c server
Mümkün mü? Öyleyse nasıl?
Bir bilgisayarda emacs çalıştırabilmek isterim:
server $ emacs --daemon
Ve sonra başka birinden ona bağlan:
local $ emacsclient -c server
Mümkün mü? Öyleyse nasıl?
Yanıtlar:
Uzak bir bilgisayarda çalışan bir Emacs örneğine bağlanmak için emacsclient kullanamazsınız. Bu istemci-sunucu konsepti, ağ düğümleriyle değil (yerel) işlemlerle ilgilidir. Ancak, olabilir uzak bilgisayara giriş yapmak için çeşitli ağ teknolojileri kullanmak, orada çalışan bir emacs sunucuya takmak ve yerel olarak emacsclient ekranını görüntüler. Kullanılan işletim sistemine bağlı olarak, ağ bağlantısı SSH (terminal / X-Yönlendirme), VNC, RDP vb.
GÜNCELLEME :
Bazı kişilerin belirttiği gibi, emacsclient aslında sunucuya TCP yoluyla bağlanma seçeneğine sahip. Bununla birlikte, emacsclient hiçbir zaman uzaktan kullanılmadığı için, TCP soket seçeneği UNIX olmayan sistemlerle uyumluluk için gereklidir (yani, Windows gibi UNIX etki alanı soketlerinin bulunmadığı işletim sistemleri).
Muhtemelen istediğin gibi değil ama X-forwarding ile ssh kurulumunu yaptığını varsayarsak, sunucuda tam olarak başlayabilir ve uzaktan DISPLAY'e yönlendirebilirsiniz. (Feragatname: doğrudan web biçimine yazılan kod)
local> ssh server -f emacsclient -c --display=$DISPLAY
İstediğin bu olmayabilir ama sadece bir şekilde yardımcı olup olamayacağını görmek için.
Genelde Vagrant ile önyüklenen sanal bir makinede çalışıyorum, dizimi ~/.emacs.d
makinem (yerel) ve sanal makine (uzak) arasında aşağıdaki Vagrantfile
dosyaya koyarak senkronize ettim :
config.vm.synced_folder "~/.emacs.d", "/home/vagrant/.emacs.d"
Ayrıca, Emacs config aygıtım başlangıçta otomatik olarak bir sunucu başlatır:
(require 'server)
(setq server-use-tcp t
server-socket-dir "~/.emacs.d/server")
(unless (server-running-p)
(server-start))
Böylece, sanal makinenin içinde bir Emacs sunucusu başlattığımda, aşağıdakilerle bağlantı kurabilirim:
ssh -Y -i ~/.vagrant.d/insecure_private_key "<virtual machine hostname>" 'emacsclient -c -f ~/.emacs.d/server/server'
sanal makine ana makine adı , ~ / .ssh / config dosyasında yapılandırdığım sanal makinenin ana makine adıdır :
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
Not: Sanal makinenin içindeki Emacs sunucusunu başlatmadan önce ~/.emacs.d/server/server
dosyanın mevcut olmadığını kontrol ettim (eğer öyleyse kaldırırım), aksi halde çalışmaz.
.ssh/config
. Sadece belirtmeniz gerekir Host
. Şüpheniz varsa, komutun çıktısını kullanabilirsiniz: dosyanızı vagrant ssh-config
ayarlayın ~/.ssh/config
.
Uzak dosyaları yerel aygıtlarda otomatik olarak aç
İlk çözümle başarı elde ettim. İkincisi daha basit gibi görünüyor, ben henüz denemek için değilim.