Emacs shell 模式 SSH 会话中的 Tab 补全

发布于 2024-10-12 01:21:07 字数 463 浏览 3 评论 0原文

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

例如,如果文件 ~/foobar 存在于本地计算机上,而 ~/frob 存在于远程计算机上,则输入 ~/f按 T​​ab 会导致 ~/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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

满意归宿 2024-10-19 01:21:07

不要运行 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.

筱武穆 2024-10-19 01:21:07

当通过 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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文