当我在 GNU Screen 下使用 emacs 时,如果我调用 Cx Cs,屏幕就会挂起并且不响应任何键盘输入。
我无法重现这个问题,但每天至少要终止一次我的屏幕会话并重新启动它。
我该如何解决这个问题?
谢谢
答案1
CtrlS是“暂停传输”(XOFF)流量控制字符。通常由 tty 驱动程序处理,在本例中为 Screen。它的对立面是 XON,即CtrlQ。
当您启动 Emacs 时,它通常会接管大多数特殊字符(CtrlC例如,不仅仅是流控制,还有常见的“中断”)。
用于C-a
:flow off
禁用此屏幕窗口的流控制。确认(在弹出窗口中C-a
:info
查找)。-flow
如果没有帮助,请尝试
stty -ixon
或stty stop undef
。stty -f /dev/tty1
(您可以使用或从单独的窗口执行此操作stty </dev/tty1
。)
在我的系统 (Linux) 上,Screen做注意,当 tty 的流量控制被禁用时。不过,您的操作系统可能有一些限制。
答案2
我在 screen 下使用 emacs 时也遇到了同样的屏幕锁定问题,而且还有很多其他问题。例如,emacs 中的 Ca 会带您到行首,但被 screen 拦截,无法正常工作。
解决方案:
在您的主目录中创建一个文件 .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
然后,每次打开新屏幕时,您需要使用 Cu 来输入新屏幕命令,而不是使用 Ca。另外两个更改解决了我需要更改的几个问题,以便能够在屏幕下顺利使用 emacs。