当通过 SSH 连接到远程服务器时,Eshell 表现不佳,例如:
M-x eshell
ssh server
<tab> *inserts literal tab instead of trying to complete*
Run Code Online (Sandbox Code Playgroud)
击中<tab>,例如,插入一个文本标签。有没有办法find-file blah通过 SSH完成选项卡完成、lisp 交互(如)等?我读过的所有文档都说 Eshell 是“TRAMP-aware”的,我认为这意味着它可以处理这个问题。
我只是错误地假设它可以通过 SSH 工作,还是有什么问题?
这是 Emacs 24.0.94 预测试。
SSH 实际上是使用TRAMP-mode集成到 Eshell 中的,因此您无需使用cd特殊路径名运行“ssh”命令:
~ $ cd /ssh:user@host.com:~
/ssh:user@host.com:/home/user $
Run Code Online (Sandbox Code Playgroud)
然后你应该在远程服务器上对命令和文件名进行制表符补全。选项卡完成可能会滞后,但这取决于它必须远程查找和通过网络传输的替代方案的数量。
如果您的肌肉记忆出卖了您并且您继续输入“ssh”,您可能需要在 eshell 中定义一个别名(这将自动保存到~/.emacs.d/eshell/alias)
$ alias ssh 'cd /ssh:$1:~'
Run Code Online (Sandbox Code Playgroud)
另外值得注意的是,当 Eshell 位于远程服务器上并且您点击C-x C-f它时,它将完成远程服务器上的文件名。它们将自动加载到本地缓冲区并通过 SCP 写回。你也可以在没有 Eshell 的情况下做到这一点,这是tramp-mode 的一个特性。
| 归档时间: |
|
| 查看次数: |
1408 次 |
| 最近记录: |