2011-02-22 40 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"