Emacs:stream氓不起作用
我试图通过Tramp通过Emacs打开一个远程文件。
(require 'tramp) (setq tramp-default-method "ssh")
我收到了Emacs的消息
stream氓:等待来自远程shell的提示
Emacs挂起,之后没有任何回应
Emacs安装在Windows上; 远程文件在Linux机器上。
如果您连接的帐户使用了一些奇怪的花哨的shell提示符,那么这很有可能导致stream氓访问。
以root身份login,然后input
PS1="> "
(这是一个正常的,标准的shell(ZSH,BASH,younameit)提示,一个tramp会理解的),然后切换到用户帐户,启动emacs -q
(确保你的.emacs
不会造成这个混乱)到Cx Cf /sudo:root@localhost:/etc/hosts
,看看有什么。
你可以(不推荐)自定义正则expression式来定义tramps的期望:
Mx customize-variable RET tramp-terminal-prompt-regexp
我的方法是:
- 确保variables
tramp-terminal-type
设置为“哑”
Mx customize-variable RET tramp-terminal-type
- testing你的。* shrc并提供正确的提示:
case "$TERM" in "dumb") PS1="> " ;; xterm*|rxvt*|eterm*|screen*) PS1="my fancy multi-line \n prompt > " ;; *) PS1="> " ;; esac
你的Windows ssh客户端是这里的关键,而'ssh'Tramp方法几乎肯定是错误的。
如果您使用的是Cygwin,那么您需要使用'sshx'方法,而您可能需要使用ssh-agent来处理authentication。 细节在这里: 使用EmacsW32和cygwin的stream行可能吗?
我想这同样适用于任何独立的ssh客户端,不需要完整的Cygwin安装,但使用Cygwin DLL。 (我提到这一点,因为我很确定我记得看到这样的事情。)
如果您使用PuTTY,那么您需要“plink”方法,如Alex Ott指出的那样。 如果Wiki不够用,那么这里的search可能会提出configuration这种方法的解决scheme。
我可以build议的其他select是:
-
使用Cygwin本地Emacs。 这将比NTEmacs慢,但stream浪汉似乎与'ssh'方法很好,并且密码提示也适用。
-
在你的Windows机器上托pipe一个Linux VM,然后运行Emacs。 这是一个相当大的跳跃,但这是我在Windows中使用Tramp的首选方式 。
你有没有检查Emacs维基解决scheme? ssh
是在PATH
? 还build议在MS Windows上使用plink
– 请参阅Tramp文档中的“内联方法”一节
顺便说一句 – 如果你需要tramp
sudo
– 你可以sudoedit
没有stream浪汉 sudoedit
。
目前我正在使用这个bash函数:
erf () { SUDO_EDITOR="emacsclient -a emacs" sudoedit $@; }