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

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

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

我无法重现这个问题,但每天至少要终止一次我的屏幕会话并重新启动它。

我该如何解决这个问题?

谢谢

答案1

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 的流量控制被禁用时。不过,您的操作系统可能有一些限制。

答案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。

相关内容