我使用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和處理我的終端會話(如文本文件)是一件很棒的事情。
'C-c C-c'適用於Cygwin/bash/xemacs。 – mob 2011-02-22 21:15:34
啊是的,C-c C-c在XEmacs(版本21)中正常工作。感謝您指出這一點。我希望能使它與GNU Emacs 23.2一起工作。 – PottedMeat 2011-02-22 21:40:13
看起來像是一個(長期存在的)你遇到的錯誤。 (http://cygwin.com/ml/cygwin/2010-10/msg00437.html)。這個bug必須修復。直到那時,你會錯過哪些功能,比如說,在shell中使用eshell? – vpit3833 2011-02-22 22:40:06