在Emacs shell模式的SSH会话中完成标签填写

我当前的emacs使用模式导致我有几个shell模式缓冲区打开,每个运行一个ssh会话。 但是,我遇到了一个问题 – 当我尝试在远程会话中完成文件名和其他操作时,shell会尝试使用本地计算机上的可用完成项,而不是远程计算机上的完成项。

例如,如果在本地机器上存在~/foobar文件,并且在远程机器上存在~/frob ,那么input~/f然后按tab键导致~/foobar而不是正确完成。 如果我在emacs之外使用ssh并尝试相同的操作,那么我会正确地完成~/frob

我怎样才能得到tab-completion来完成正常的ssh会话呢?

稍后注意: Mx cd RET /ssh:host.example.com:/path/to/me似乎也能够轻轻松松地处理制表符完成。

Solutions Collecting From Web of "在Emacs shell模式的SSH会话中完成标签填写"

emacs在ssh到其他机器时不能跟踪当前目录(default-direcotry)。

您可以手动将default-directory设置为当前shell缓冲区上的/ trash文件名,例如/ ssh:YOURHOST:/ home / dir

我主要通过tramp-bookmarks / shell在远程机器上启动shell会话。 自动流氓设置的默认目录。 但是在远程文件的跟踪方面存在一个bug,在trunk(未发布)中是固定的。

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

而不是运行Mx shell并运行ssh到远程计算机,请访问远程计算机上的目录(使用Tramp),然后在该Dired缓冲区中运行Mx shell。