Windows + SSH上的Emacs:subshel​​l spurios字符?

时间:2010-06-18 09:23:25

标签: windows shell emacs ssh

我正在尝试通过SSH连接到远程shell,在Windows XP上使用Emacs。我目前正在使用Putty,但我想切换到Emacs。

我找不到合适的方法。我已经实现的最好的是运行Plink(Putty的命令行版本)作为子shell,但我仍然得到虚假的字符和重复的提示,如下所示:

Last login: Fri Jun 18 11:09:11 2010 from XXXXX
^]0;root@XXXXX:~^[root@XXXXX ~]# ls
ls
file-1.cfg              file-10.log         file-100.pcap
^]0;root@XXXXX:~^[root@XXXXX ~]# 
^]0;root@XXXXX:~^[root@XXXXX ~]# 

我猜那些带有“^”前缀的序列是转义字符,但我找不到一种方法来翻译它们,或者找不到它们。我试过这个:

(autoload 'ansi-color-for-comint-mode-on "ansi-color" nil t)
(add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on)
(let ((explicit-shell-file-name "C:/Programmi/Putty/plink")
      (explicit-plink-args '("root@XXXXX")))
    (shell))

任何提示?您是否有办法在本机Windows版本的Emacs中运行Secure Shell?

软件:GNU Emacs 23.1.1,plink.exe版本0.60,Windows XP SP3

感谢。

1 个答案:

答案 0 :(得分:1)

http://www.emacswiki.org/emacs/AnsiTermHints介绍了如何使用ansi-term-mode进行远程主机的ssh连接。

有问题的序列(模糊地)看起来像标准的Bash提示,将xterm中的标题栏设置为当前目录等。您可以通过设置TERM来获得不同的默认提示创建SSH连接时的环境变量,以便Bash不会认为您的终端是xterm。尝试使用TERM=emacs(根据需要调整shell的语法)。如果成功,您可能根本不需要ansi-term-mode,但如果您有ls目录列表着色等,它仍然有用。