2009-07-15 11 views
9

मैं अपने खोल को emacs में चलाता हूं, लेकिन जब मैं इसे किसी अन्य कंप्यूटर में ssh करने के लिए उपयोग करता हूं तो यह टैब-समापन को तोड़ देता है। क्या इसे ठीक करने का कोई तरीका है?Emacs रिमोट खोल

+0

आप विस्तार से बता सकते हैं? क्या आप मशीन विशिष्ट (उदाहरण के लिए स्थानीय डिस्क) पथ पर फ़ाइल नाम पूरा करने की उम्मीद कर रहे थे? आम तौर पर आदेश? –

उत्तर

9

प्रयास करें:

M-x cd /hostname:/current/path/in/the/shell 

रास्तों कि खोल के लिए ठीक से काम करना चाहिए के लिए कि Ange-एफ़टीपी (या आवारा), और फिर टैब पूरा होने की स्थापना करना चाहिए - जब तक आप एक अलग मशीन में प्रवेश करें।

आप अपने लिए यह करने के लिए ssh टाइप करते समय पहचानने के लिए एक कॉमंट प्रक्रिया फ़िल्टर सेट अप कर सकते हैं, लेकिन ssh सत्र से बाहर निकलने पर इसे ठीक करना मुश्किल है, लेकिन अन्य उपयोगों से धोखा नहीं है exit

एक स्वचालित समाधान के लिए, मैं emacs को खोल बफर की वर्तमान कार्य निर्देशिका के साथ सिंक्रनाइज़ करने के लिए the approach I personally use बढ़ाने का सुझाव दूंगा। होस्टनाम के साथ बस एक अतिरिक्त जानकारी जोड़ें, और ऊपर दिखाए गए होस्टनाम और पथ को सेट करने के लिए इसका उपयोग करें।

1

यदि आप कुंजी मैपिंग के साथ अप्रत्याशित व्यवहार प्राप्त करते हैं तो आप अपने खोल को होस्ट करने के लिए एम-एक्स ansi-term का प्रयास कर सकते हैं। यह कहकर कि मैं आपके सेट-अप पर आपके द्वारा वर्णित समस्या का पुन: उत्पादन नहीं कर सका।

0

मैं एक ऐसी ही समस्या मुझे लगता है कि था और निकालने मशीन पर संपादन मेरी ~/.bash_login और संलग्न

export TERM=xterm 

मैं उपयोग ओएस एक्स द्वारा इसे हल और समस्या नहीं थी जब एक Linux (Debian लेनी) से कनेक्ट कर रहा

2

किसी अन्य धागे में, किसी ने एशेल का उल्लेख किया है जिसका मैंने कभी उपयोग नहीं किया है, लेकिन मैंने इसे एसएसएच के साथ करने की कोशिश की और अच्छे एकीकरण के सभी प्रकार हो रहे हैं। Eshell सीखने का समय।

0

मैंने दूरस्थ होस्ट पर एक खोल खोलने के लिए अभी एक छोटा सा फ़ंक्शन लिखा है। cdshell से पहले कॉल टैब पूर्ण होने पर काम करता है।

यह आपके से अलग हो सकता है, क्योंकि यह स्थानीय खोल में ssh'ing के बजाय एक नया खोल खोलता है। इसके अलावा, आप हैकिंग emacs Directory Tracking (या देखें कि कौन है) में हैकिंग देख सकते हैं।

(defun remote-shell (&optional host) 
    "Open a remote shell to a host." 
    (interactive) 
    (with-temp-buffer 
    (let ((host (if host host (read-string "Host: ")))) 
     (cd (concat "/scp:" host ":")) 
     (shell (concat "*" host "*"))))) 

(defun myserver-shell() (interactive) (remote-shell "myserver")) 
0

बफर में एम-एक्स खोल लगाया गया ए एक शेल बफर बी पर स्विच करेगा; आमतौर पर खोल। अनजाने में यह आवश्यक होने पर बी बनाता है। एक उपसर्ग तर्क से बी के नाम के लिए पूछना होगा। अगर ए रिमोट होस्ट पर कुछ देख रहा है तो शेल दूरस्थ होस्ट पर चलाया जाएगा। लेकिन केवल अगर यह मौजूदा बी नहीं ढूंढ पाता है तो उस समय फ़ाइल नाम पूरा होने पर काम करेगा।

इमैक विकी में इसके साथ टिंकर करने के बारे में कुछ नोट्स हैं। उदाहरण के लिए देखें this section में मेरा-खोल फ़ंक्शन, जो बी के लिए डिफ़ॉल्ट नाम बढ़ाएगा ताकि दूरस्थ फ़ाइलों को रिमोट शैल मिल जाए। मैं वही काम करता हूं advising the shell function

फ़ाइल नाम स्वत: पूर्णता ठीक काम करेगी। कमांड स्वतः पूर्ण? बहुत कम। मेरे लिए यह emacs ब्लॉक करता है और फिर वास्तव में काम नहीं करता है।

0

मैं दूरस्थ मशीन तक पहुंचने के लिए का उपयोग करता हूं और वहां एक खोल खोलता हूं।

यहाँ समारोह मैं का उपयोग करें, लिया जाता है और संशोधित Tikhon Jelviss' emacs configuration से:

(defun anr-shell (buffer) 
    "Opens a new shell buffer where the given buffer is located." 
    (interactive "sBuffer: ") 
    (pop-to-buffer (concat "*" buffer "*")) 
    (unless (eq major-mode 'shell-mode) 
    (dired buffer) 
    (shell buffer) 
    (sleep-for 0 200) 
    (delete-region (point-min) (point-max)) 
    (comint-simple-send (get-buffer-process (current-buffer)) 
         (concat "export PS1=\"\033[33m" buffer "\033[0m:\033[35m\\W\033[0m>\"")))) 

उदाहरण:

(anr-shell "/[email protected]#2222:/vagrant/") 
संबंधित मुद्दे