问题:Emacs shell 模式 SSH 会话中的选项卡完成

我当前使用 emacs 的模式导致我打开了几个 shell 模式缓冲区,每个缓冲区都运行一个 ssh 会话。不过,我遇到了一个问题——当我尝试在远程会话中使用制表符完成文件名和其他内容时,shell 会尝试使用本地机器上可用的完成,而不是远程机器上可用的完成。

例如,如果文件~/foobar存在于本地计算机上,而~/frob存在于远程计算机上,则键入~/f并按 Tab 会导致~/foobar而不是正确完成。如果我在 emacs 之外使用 ssh 并尝试同样的事情,我会得到~/frob的正确完成。

如何获得 tab-completion 以完成它在正常 ssh 会话中的方式?

稍后注意: M-x cd RET /ssh:host.example.com:/path/to/me 似乎也促使它能够优雅地处理制表符完成。

解答

当 ssh-ing 到其他机器时,Emacs 无法跟踪当前目录(默认目录)。

您可以在当前的 shell 缓冲区中手动将 default-directory 设置为像 /ssh:YOURHOST:/home/dir" 这样的流浪文件名。

我主要通过 tramp-bookmarks/shell 在远程机器上启动 shell 会话。 Tramp 自动设置 default-directory。但是远程文件的目录跟踪存在一个错误,该错误已在主干(未发布)中修复。

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

Logo

更多推荐