2011-02-22 39 views
3

我使用Cygwin版本的Emacs。除了使用Emacs外壳(M-x外壳)时的一些怪癖外,情况很好。 Emacs shell使用Cygwin的bash。目前最大的问题是无法将SIGINT发送到shell以中断当前正在运行的命令。例如,我经常使用ssh登录到远程主机,然后“tail -f”文件。我无法摆脱尾巴指挥。在Unix/Linux下使用Emacs shell时,按C-c C-c(comint-interrupt-subjob)将发送SIGINT到shell(bash),tail命令(或其他)将按预期中断。在Emacs shell和Cygwin下处理信号

想要一个快速简单的例子,运行“M-x shell”,然后运行“睡眠30”,并尝试中断睡眠命令。您可以退出(C-g)并在Emacs中执行其他操作,但Emacs外壳在睡眠命令期间挂起。

我有一种感觉,这与Cygwin中信号发送/处理的差别有关,与Unix内的信号相反。由于Cygwin bash外壳对信号做出了适当的响应,我不得不假设有一些方法可以让Emacs以一种理解的方式向它发送一个SIGINT信号。有任何想法吗?顺便说一下,我已经使用了Emacs的eshell,term和ansi-term,但是我更喜欢shell的原因有很多。我也使用mintty和GNU Screen,并且没有任何抱怨,但是使用Emacs shell和处理我的终端会话(如文本文件)是一件很棒的事情。

+0

'C-c C-c'适用于Cygwin/bash/xemacs。 – mob 2011-02-22 21:15:34

+0

啊是的,C-c C-c在XEmacs(版本21)中正常工作。感谢您指出这一点。我希望能使它与GNU Emacs 23.2一起工作。 – PottedMeat 2011-02-22 21:40:13

+1

看起来像是一个(长期存在的)你遇到的错误。 (http://cygwin.com/ml/cygwin/2010-10/msg00437.html)。这个bug必须修复。直到那时,你会错过哪些功能,比如说,在shell中使用eshell? – vpit3833 2011-02-22 22:40:06

回答

0

我认为这是命令提示符作为tty的更多问题。我一直在向Cygwin和Cygwin中的emacs shell发送正确的信号时遇到问题,所以我找到了这个名为puttycyg的程序。腻子有一个很棒的外壳,我想要Cygwin的那种,所以我用这个:http://code.google.com/p/puttycyg/

我在桌面上创建了一个快捷方式,使其更易于使用。你可以创建一个会话并从那里调用它“cygwin”,然后创建一个可执行文件的快捷方式并使用-load "cygwin"