Emacs shell 模式 SSH 会话中的 Tab 补全
我当前的 emacs 使用模式导致我打开了多个 shell 模式缓冲区,每个缓冲区都运行一个 ssh 会话。不过,我遇到了一个问题 - 当我尝试在远程会话中使用制表符补全文件名和其他内容时,shell 尝试使用本地计算机上可用的补全,而不是远程计算机上的补全。
例如,如果文件 ~/foobar
存在于本地计算机上,而 ~/frob
存在于远程计算机上,则输入 ~/f
按 Tab 会导致 ~/foobar
而不是正确完成。如果我在 emacs 之外使用 ssh 并尝试同样的操作,我会得到 ~/frob
的正确完成。
如何才能像正常 ssh 会话中那样完成制表符补全?
稍后注意: Mx cd RET /ssh:host.example.com:/path/to/me 似乎也推动它能够优雅地处理制表符完成。
My current use pattern of emacs results in my having several shell-mode buffers open, each running an ssh session. I am running into an issue with this, though - when I try to tab-complete file names and other things in my remote session, the shell attempts to use completions available on the local machine instead of on the remote machine.
For example, if the file ~/foobar
exists on the local machine and ~/frob
exists on the remote machine, typing in ~/f
and pressing tab results in ~/foobar
instead of completing correctly. If I use ssh outside of emacs and try the same thing, I get the correct completion of ~/frob
instead.
How can I get tab-completion to complete the way it does in normal ssh sessions ?
Later note: M-x cd RET /ssh:host.example.com:/path/to/me also seems to nudge it into being able to gracefully deal with tab completion.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
不要运行 Mx shell 并运行 ssh 到远程计算机,而是访问远程计算机上的目录(使用 Tramp),然后在该 Dired 缓冲区中运行 Mx shell。
Instead of running M-x shell and running ssh to the remote computer, visit a directory on the remote computer (using Tramp) and then run M-x shell in that Dired buffer.
当通过 ssh 连接到其他机器时,Emacs 无法跟踪当前目录(默认目录)。
您可以在当前的 shell 缓冲区上手动将 default-directory 设置为临时文件名,例如 /ssh:YOURHOST:/home/dir"。
我启动 shell-sessions在远程机器上,主要是通过 Tramp-bookmarks/shell 自动设置 default-directory 。
但远程文件的目录跟踪有一个bug,该bug已在trunk中修复(未发布)。
http://comments.gmane.org/gmane.emacs.bugs/39082
Emacs can't track the current directory (default-directory) when ssh-ing to other machines.
You could set default-directory to a tramp file-name like /ssh:YOURHOST:/home/dir" on your current shell-buffer manually.
I start shell-sessions on a remote machine mostly via tramp-bookmarks/shell. Tramp sets default-directory automatically.
But there is a bug in directory tracking on remote files, which is fixed in trunk (unreleased).
http://comments.gmane.org/gmane.emacs.bugs/39082