我试图通过Tramp通过Emacs打开一个远程文件.
(require 'tramp)
(setq tramp-default-method "ssh")
Run Code Online (Sandbox Code Playgroud)
我收到了来自Emacs的消息
Tramp:等待来自远程shell的提示
Emacs挂了,之后没有回复任何动作
Emacs安装在Windows上; 远程文件在Linux机器上.
yPh*_*hil 66
如果您要连接的帐户使用了一些奇怪的花哨shell提示符,那么很可能这就是让流浪汉旅行的原因.
以root用户身份登录,然后输入
PS1="> "
Run Code Online (Sandbox Code Playgroud)
(这是一个正常的,标准的shell(ZSH,BASH,younameit)提示,一个tramp
会理解的)然后切换到用户帐户,并启动 emacs -q
(以确保你.emacs
不会导致这个混乱)并试着C-x C-f /sudo:root@localhost:/etc/hosts
看看是什么.
您可以(不推荐)自定义定义tramp期望的正则表达式:
M-x customize-variable RET tramp-terminal-prompt-regexp
Run Code Online (Sandbox Code Playgroud)
我的方法:
tramp-terminal-type
设置为"哑"M-x customize-variable RET tramp-terminal-type
Run Code Online (Sandbox Code Playgroud)case "$TERM" in "dumb") PS1="> " ;; xterm*|rxvt*|eterm*|screen*) PS1="my fancy multi-line \n prompt > " ;; *) PS1="> " ;; esac
phi*_*ils 18
你的Windows ssh客户端是关键,而'ssh'Tramp方法几乎肯定是错误的.
如果你正在使用Cygwin,那么你需要使用'sshx'方法,你可能需要使用ssh-agent来处理身份验证.详细信息如下: 使用tramp与EmacsW32和cygwin,可能吗?
我想这同样适用于任何独立的ssh客户端,它不需要完整的Cygwin安装,但确实使用了Cygwin DLL.(我提到这个,因为我很确定我记得看过这样的事情.)
如果您正在使用PuTTY,那么您需要'plink'方法,正如Alex Ott指出的那样.如果Wiki不够,那么这里的搜索可能会找到配置该方法的解决方案.
我建议的其他替代方案是:
使用Cygwin原生Emacs.这将比NTEmacs慢,但Tramp似乎与'ssh'方法一起使用,并且密码提示也有效.
在Windows机器上托管Linux VM,然后在其上运行Emacs.这是一个相当大的跳跃,但它是我在Windows中使用时使用Tramp的首选方式.