通过 SSH 的 Emacs eshell 不遵循键盘命令或 elisp

通过 SSH 的 Emacs eshell 不遵循键盘命令或 elisp

当通过 SSH 连接到远程服务器时,Eshell 表现不佳,例如:

M-x eshell
ssh server
<tab> *inserts literal tab instead of trying to complete*

例如,点击<tab>会插入一个文字制表符。有没有办法find-file blah通过 SSH 获得制表符补全、lisp 交互(如 )等?我读过的所有文档都说 Eshell 是“TRAMP 感知”的,我猜这意味着它可以处理这个问题。

我是不是错误地假设它可以通过 SSH 工作,或者有什么问题?

这是对 Emacs 24.0.94 的预测试。

答案1

SSH 实际上集成到了 Eshell 中,使用流浪模式,因此您不需要运行“ssh”命令,而是使用cd特殊路径名:

~ $ cd /ssh:[email protected]:~
/ssh:[email protected]:/home/user $ 

然后,您应该可以在远程服务器上使用 Tab 补全命令和文件名。不过,Tab 补全可能会比较滞后,具体取决于需要远程查找并通过网络传输多少个备选方案。

如果你的肌肉记忆背叛了你,你一直输入“ssh”,你可能需要定义一个 eshell 别名(这将自动保存到~/.emacs.d/eshell/alias

$ alias ssh 'cd /ssh:$1:~'

还要注意的是,当 Eshell 在远程服务器上并且您点击C-x C-f它时,它将完成远程服务器上的文件名。它们将自动加载到本地缓冲区并通过 SCP 写回。您也可以在没有 Eshell 的情况下执行此操作,这是 tramp-mode 的一个功能。

相关内容