Answers:
SSH实际上是使用Tramp-mode集成到Eshell的,因此,您无需运行“ ssh”命令,而是使用cd
特殊的路径名:
~ $ cd /ssh:user@host.com:~
/ssh:user@host.com:/home/user $
然后,您应该在远程服务器上使用Tab键完成命令和文件名的补全。制表符补全可能会比较滞后,但这取决于它必须进行远程查找并通过网络进行传输的替代方案。
如果您的肌肉记忆出卖了,而您继续输入“ ssh”,则可能要在eshell中定义一个别名(该别名将自动保存到~/.emacs.d/eshell/alias
)
$ alias ssh 'cd /ssh:$1:~'
还要注意的是,当Eshell在远程服务器上并单击时C-x C-f
,它将在远程服务器上完成文件名。它们将被自动加载到本地缓冲区中并通过SCP写回。您也可以在没有Eshell的情况下做到这一点,这是流浪汉模式的功能。
cd /ssh:user@host.com:~
随后执行此操作,则cd /
最终返回到本地根目录,大概是因为我使用的是eshell cd
。但是,*cd
给出错误cd: external command not found
。您是否知道获取选项卡补全和正确命令行为的方法,还是eshell为此使用了错误的工具?
C-x C-f user@host.com:~
,M-x shell
。它不是eshell,但确实可以正确地cd
完成制表符。
cd /ssh:..
命令一起提供私钥?
ssh -t -t server
吗?double-t
选项强制ssh分配伪终端,即使它不在tty上运行也是如此。