Emacs Cx Cs(save-buffer)使用時のGNUスクリーンの問題


33

GNU Screenでemacsを使用しているときにCx Csを呼び出すと、画面がハングし、キーボード入力に応答しません。

これを再現することはできませんが、少なくとも1日に1回はスクリーンセッションを終了して再起動する必要があります。

どうすれば解決できますか?

ありがとう


どの Unix?Linux、BSD、Solarisなどでは、端末デバイスの処理に多くの違いがあります
...-grawity

1
実際、Puttyを使用してUbuntu Server LTSインスタンスにsshします。
simao

回答:


52

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)では、ttyのフロー制御が無効になっているときにScreen 通知します。ただし、OSにはいくつかの制限があります。


:flow off働いた。ありがとう!永続的にする方法はありますか?
simao

1
@simao:defflowのマニュアルページを参照してくださいscreen
-grawity

3
@simaoと@grawityのコメントの詳細-フロー制御を永久に無効にするには(これがほとんどの人にとって望ましい結果だdefflow offと思い~/.screenrcます)、ファイルに行を追加するか、ホームディレクトリに存在しない場合は作成します。これは、emacsをscreenウィンドウ内で適切に機能させるのに十分でした。キーを再バインドする前に、このアプローチを検討する必要があります。
pscl

2
これで問題は解決しましたが、「突然の」画面がこのモードになった理由をまだ知りません。...誤って入力したフロー制御を可能にする画面キーストロークがあるのでしょうか... ?? ?
malcook

1
私たちはGNUスクリーンとGNU Emacsについて話しているのですが、彼らは両方をシームレスに動作させる方法を見つけませんでしたか?...
イヴボームズ14年

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を使用して新しい画面コマンドを入力する必要があります。他の2つの変更は、スクリーンの下で問題なくemacsを使用できるようにするために変更する必要のあったものをさらにいくつか処理します。


C-uemacsの重要な鍵です。私はそれが良い考えだとは思いませんが、.screenrcを変更するという考えはより良い代替案です。
vfclists
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.