2011-01-13 46 views
10

我目前的emacs使用模式導致我打開幾個shell模式緩衝區,每個都運行一個ssh會話。但是,我遇到了一個問題 - 當我嘗試在遠程會話中製表文件名和其他內容時,shell會嘗試使用本地計算機上的可用完成程序,而不是遠程計算機上的可用完成程序。Emacs shell模式SSH會話中的標籤完成

例如,如果該文件存在~/foobar在本地機器上,並且存在~/frob在遠程機器上,在~/f打字,在~/foobar按壓代替正確完成的標籤的結果。如果我在emacs之外使用ssh並嘗試相同的操作,那麼我會正確完成~/frob

如何獲得tab-completion來完成正常ssh會話中的操作?

後記:M-x cd RET /ssh:host.example.com:/path/to/me似乎也能夠使它能夠優雅地處理製表符完成。

+0

可能重複的[Emacs遠程shell](http://stackoverflow.com/questions/1134149/emacs-remote-shell) – 2014-05-27 21:39:06

回答

10

當ssh到其他機器時,emacs無法跟蹤當前目錄(default-direcotry)。

您可以設置默認目錄一個流浪漢文件名狀/SSH:YOURHOST:在當前的shell緩衝手動/家居/目錄」

我開始一個殼會議遠程MACHING主要通過流浪漢書籤/殼。流浪漢集的默認目錄自動。 但在direcotry一個bug遠程文件跟蹤,其固定在軀幹(未發行)。

http://comments.gmane.org/gmane.emacs.bugs/39082

+0

這幾乎正是我需要的答案,謝謝。 – 2011-01-13 20:37:23

+0

謝謝jürgen!順便說一句,你可以backport該目錄跟蹤錯誤修復這個ELISP: (加鉤'COMINT模式鉤 (lambda()(設置(使本地變量'comint文件名前綴) (或(file-remote -p default-directory)「」)))) – ryan 2011-05-16 03:29:08

9

而不是運行M-x shell並運行ssh到遠程計算機,請訪問遠程計算機上的目錄(使用Tramp),然後在該Dired緩衝區中運行M-x shell。