使用Emacs Cx Cs(保存缓冲区)时,GNU屏幕出现问题


33

当我在GNU屏幕下使用emacs时,如果我调用Cx Cs,屏幕将挂起并且不响应任何键盘输入。

我无法重现此内容,但是每天至少必须终止一次屏幕会话并重新启动它。

我该如何解决?

谢谢


哪个 Unix?Linux,BSD,Solaris,...之间的终端设备处理有很多区别……
grawity 2011年

1
我实际上是在使用Putty SSH进入Ubuntu Server LTS实例。
simao 2011年

Answers:


52

CtrlS是“暂停传输”(XOFF)流量控制字符。通常由tty驱动程序处理,或者在这种情况下由Screen处理。相反的是XON或CtrlQ

启动Emacs时,它通常会接管大多数特殊字符(例如,不仅是流控制,还包括通常的CtrlC“中断”)。

  • 使用C-a :flow off以禁用流量控制此屏幕的窗口。

    确认C-a :info-flow在弹出窗口中查找)。

  • 如果没有帮助,请尝试stty -ixonstty stop undef

    (您可以使用stty -f /dev/tty1或在单独的窗口中进行操作stty </dev/tty1。)

在我的系统(Linux)上,Screen 确实会通知何时为tty禁用了流控制。但是,您的操作系统可能有一些限制。


:flow off工作了。谢谢!有什么办法可以使它永久化吗?
simao 2011年

1
@simao:请参见defflow的手册页screen
grawity

3
详细说明@simao和@grawity的注释-要永久禁用流控制(我认为这对大多数人来说是理想的结果),请将该行添加defflow off~/.screenrc文件中,或者在主目录中创建该行(如果尚不存在)。这足以使我的emacs在screen窗口内正常运行。重新绑定任何密钥之前,应考虑此方法。
pscl 2013年

2
这为我解决了问题,但是我还没有了解为什么“突然”屏幕进入此模式。...也许有一些屏幕按键可以使我无意中键入的流量控制...? ?
malcook 2014年

1
我们在谈论GNU屏幕和GNU Emacs,但他们没有找到一种使两者无缝工作的方法?...
Yves Baumes 2014年

4

我在锁定屏幕时遇到了同样的问题,在屏幕下使用emacs时遇到了更多问题。例如,emacs中的Ca(将您带到该行的开头)被屏幕拦截,并且不起作用。

解:

使用以下命令在您的主目录中创建文件.screenrc:

#Change escape character to C-u 
escape "^uu"                                                                    
#unbind ctrl+s from xoff in order to be able to search in emacs                 
bind s                                                                          
bind ^S                                                                         
#unbind ctrl+x from lockscreen in order to be able to save in emacs             
bind x                                                                          
bind ^X                                                                         

然后,每次打开新屏幕而不是使用Ca时,都需要使用Cu输入新屏幕命令。为了能够在屏幕下使用emacs而不出现问题,其他两项更改需要我做一些更改。


C-u是emacs的重要密钥。我认为这不是一个好主意,但是更改.screenrc的主意是更好的选择。
vfclists
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.