Saya ingin dapat menjalankan emacs di satu komputer:
server $ emacs --daemon
Dan kemudian terhubung dengannya dari yang lain:
local $ emacsclient -c server
Apakah ini mungkin? Jika ya, bagaimana caranya?
Saya ingin dapat menjalankan emacs di satu komputer:
server $ emacs --daemon
Dan kemudian terhubung dengannya dari yang lain:
local $ emacsclient -c server
Apakah ini mungkin? Jika ya, bagaimana caranya?
Jawaban:
Anda tidak dapat menggunakan emacsclient untuk terhubung ke instance Emacs yang berjalan di komputer jarak jauh. Konsep client-server ini terkait dengan proses (lokal), bukan node jaringan. Namun, Anda dapat menggunakan berbagai teknologi jaringan untuk masuk ke komputer jarak jauh, melampirkan ke server emacs yang berjalan di sana dan menampilkan layar emacsclient secara lokal. Tergantung pada sistem operasi yang digunakan jaringan dapat dilakukan melalui SSH (terminal / X-Forwarding), VNC, RDP dll.
PEMBARUAN :
Seperti yang ditunjukkan beberapa orang, emacsclient sebenarnya memiliki opsi untuk terhubung ke server melalui TCP. Namun, emacsclient tidak pernah dimaksudkan untuk digunakan dari jarak jauh, opsi soket TCP diperlukan untuk kompatibilitas dengan sistem non-UNIX (yaitu sistem operasi di mana soket domain UNIX tidak tersedia, seperti Windows).
Mungkin bukan yang Anda minta tetapi dengan asumsi Anda memiliki pengaturan ssh dengan penerusan X, Anda bisa mulai emacsclient di server dan meneruskannya ke DISPLAY jarak jauh. (Penafian: kode yang diketik langsung ke formulir web)
local> ssh server -f emacsclient -c --display=$DISPLAY
Ini mungkin bukan yang Anda inginkan tetapi untuk berjaga-jaga jika itu dapat membantu Anda.
Saya biasanya bekerja di dalam mesin virtual yang di-bootstrap dengan Vagrant, ~/.emacs.d
direktori saya disinkronkan antara mesin saya (lokal) dan mesin virtual (jarak jauh) meletakkan yang berikut dalam Vagrantfile
file:
config.vm.synced_folder "~/.emacs.d", "/home/vagrant/.emacs.d"
Konfigurasi Emacs saya secara otomatis memulai server saat startup:
(require 'server)
(setq server-use-tcp t
server-socket-dir "~/.emacs.d/server")
(unless (server-running-p)
(server-start))
Jadi ketika saya meluncurkan server Emacs di dalam mesin virtual, saya dapat menghubungkannya dengan yang berikut:
ssh -Y -i ~/.vagrant.d/insecure_private_key "<virtual machine hostname>" 'emacsclient -c -f ~/.emacs.d/server/server'
nama mesin virtual host adalah nama host dari mesin virtual yang saya konfigurasikan di ~ / .ssh / config saya:
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
Catatan: Sebelum meluncurkan server Emacs di dalam mesin virtual saya memeriksa bahwa ~/.emacs.d/server/server
file tersebut tidak ada (jika saya hanya menghapusnya) karena jika tidak maka tidak akan berfungsi.
.ssh/config
file Anda . Anda hanya perlu menentukan Host
. Dalam keraguan Anda dapat menggunakan output dari perintah: vagrant ssh-config
untuk mengatur ~/.ssh/config
file Anda .
Secara otomatis membuka file jarak jauh di emacs lokal
Saya telah sukses dengan solusi pertama. Yang kedua tampaknya lebih sederhana, saya belum mencobanya.