私は新しいコンピュータをセットアップし、通常どおりxterm
削除キーが機能するように設定を変更する必要がありました。 (Ctrl-H send ^H
、backspace send ^?
、delete send ^[[3~
。もちろん客観的に正しい方法です。)デフォルトのxterm設定にはバグがありますが、少なくともxterm側ではこの設定ですべてがうまく機能します。
問題は何らかの理由でstty
xtermの設定が常にerase = ^H
。tmux
^H
^?
stty
なぜこのように構成されているのかわかりません。これはデフォルトではありません。stty
デフォルト値との違いを表示するために単独で入力すると行が表示されerase = ^H;
、手動で入力するとstty erase ^?
削除されます。 (これはstdinとtmuxの問題も解決します。)しかし、これを開始するすべての端末に入力するのは非常に退屈で、置くことができますが、.bashrc
それは正しい方法ではないようです。
stty
この誤ったデフォルト設定ではない設定が使用される原因は何ですか?どうすれば止めることができますか?
答え1
これを行う方法はいくつかあります。おっしゃった方法が一つかもしれません。xterm
別のプログラムを実行するプログラムです。他のプログラムをpty(通常はシェル)にラップし、ラップされたプログラムに提供する入力をチャネルにパイプします。擬似端末の特徴は、エミュレートされたデバイスにすぎないということです。したがって、xterm
入力するデバイスの推測が必要です。もちろん、より具体的な情報も得ることができます。xterm
さまざまな環境変数を尊重してください。より良い点はxresourcesです。
からman xterm
:
ttyModes
(授業TtyModes
)- 端末設定キーワードとそのキーワードをバインドできる文字を含む文字列を指定します。許可されるキーワードは次のとおりです。ブルク、暑い、エブ、廃止、廃止2、削除、クリア2、フラッシュ、整数、殺す、Next、辞める、回転数、スタート、状態、止める、未決、スイッチそしてベラス。制御文字は次のように指定できます。
^
char
(例:^c
または^u
)^?
削除を示すために使用できます(127)。 undefを表現するために使用されます^-
。 Xリソースのリテラルバックスラッシュが次の文字をエスケープするために\034
使用します。^\
stty
xterm
これは、起動するたびに実行することなくデフォルトの端末設定を上書きするのに役立ちます。ただし、stty
特定のホストのプログラムは他のキーワードを使用できます。xterm
テーブルは組み込みです。ttyModes
リソースが削除値を指定すると、ptyInitialErase
リソース設定が上書きされます。つまり、xterm
端末はその値と一致するように初期化されます。
- 端末設定キーワードとそのキーワードをバインドできる文字を含む文字列を指定します。許可されるキーワードは次のとおりです。ブルク、暑い、エブ、廃止、廃止2、削除、クリア2、フラッシュ、整数、殺す、Next、辞める、回転数、スタート、状態、止める、未決、スイッチそしてベラス。制御文字は次のように指定できます。