मैं एक कंप्यूटर पर emacs चलाने में सक्षम होना चाहता हूं:
server $ emacs --daemon
और फिर इसे दूसरे से कनेक्ट करें:
local $ emacsclient -c server
क्या यह संभव है? यदि हां, तो कैसे?
मैं एक कंप्यूटर पर emacs चलाने में सक्षम होना चाहता हूं:
server $ emacs --daemon
और फिर इसे दूसरे से कनेक्ट करें:
local $ emacsclient -c server
क्या यह संभव है? यदि हां, तो कैसे?
जवाबों:
आप दूरस्थ कंप्यूटर पर चल रहे Emacs इंस्टेंस से कनेक्ट करने के लिए एमैक्शिएंट का उपयोग नहीं कर सकते। यह क्लाइंट-सर्वर अवधारणा (स्थानीय) प्रक्रियाओं से संबंधित है, न कि नेटवर्क नोड्स से। हालाँकि, आप दूरस्थ कंप्यूटर में लॉग इन करने के लिए विभिन्न नेटवर्क तकनीकों का उपयोग कर सकते हैं, वहां चल रहे एक एमएसीएस सर्वर से जुड़ सकते हैं और स्थानीय स्तर पर एमएसीएसक्लिएंट की स्क्रीन प्रदर्शित कर सकते हैं। ऑपरेटिंग सिस्टम पर निर्भर करता है कि नेटवर्किंग का उपयोग एसएसएच (टर्मिनल / एक्स-फ़ॉरवर्डिंग), वीएनसी, आरडीपी आदि के माध्यम से किया जा सकता है।
अद्यतन :
जैसा कि कुछ लोगों ने बताया, वास्तव में emacsclient में TCP के माध्यम से सर्वर से जुड़ने का विकल्प होता है। हालांकि, खाली करने का मतलब दूर से इस्तेमाल नहीं किया जाना था, गैर-यूनिक्स सिस्टम (यानी ऑपरेटिंग सिस्टम जहां यूनिक्स डोमेन सॉकेट उपलब्ध नहीं हैं, विंडोज की तरह) के साथ संगतता के लिए टीसीपी सॉकेट विकल्प की आवश्यकता होती है।
संभवतः आपने जो मांगा नहीं था, लेकिन मान लिया कि आपके पास एक्स-फ़ॉर्वर्डिंग के साथ ssh सेटअप है, तो आप सर्वर पर खाली करना शुरू कर सकते हैं और इसे दूरस्थ DISPLAY को अग्रेषित कर सकते हैं। (अस्वीकरण: कोड सीधे वेबफॉर्म में टाइप किया गया)
local> ssh server -f emacsclient -c --display=$DISPLAY
यह वह नहीं हो सकता जो आप चाहते हैं, लेकिन सिर्फ मामले में देखें कि क्या यह आपकी किसी तरह से मदद कर सकता है।
मैं आमतौर पर एक आभासी मशीन के अंदर काम करता हूं जिसे वैग्रंट के साथ बूटस्ट्रैप किया गया है, मेरे पास मेरी ~/.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'
वर्चुअल मशीन होस्टनाम उस वर्चुअल मशीन का होस्टनाम है जिसे मैंने अपने ~ / .shsh / 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 में दूरस्थ फ़ाइलों को स्वचालित रूप से खोलें
मुझे पहले उपाय से सफलता मिली है। दूसरा सरल प्रतीत होता है, मैं अभी इसे आज़मा रहा हूँ।