Bash は Esc キーを押した後、キーストロークを無視します。

Bash は Esc キーを押した後、キーストロークを無視します。

Escキー(ESC)を押すたびに、bashは私が入力した次の文字を無視します。これは普通ですか?挿入モードから通常モードに戻るときに使用するvimを使用すると、Escキーを繰り返し押す習慣があるため、これは迷惑です。

Bashはなぜこのように動作し、どのように消えますか?

ベストアンサー1

これはANSI端末の通常/予想動作です。

入力中、Esc端末は最終処理を開始する。ANSIエスケープシーケンス(続けて入力すると[カーソルAが上がります。)

したがって、Esc端末がシーケンスの次の文字を待ってから既知のシーケンスに属していない場合、処理は停止しますが、Esc入力した2文字と次の文字は失われます(これらは無効なシーケンスの一部です。廃棄されました)。

それを止める方法?できることの 1 つは、timeout()たとえば、プログラムから呼び出して端末の文字間タイムアウトを変更することです。バラよりこれ:

入力エスケープシーケンスを解釈すると、wgetchは次の文字を待っている間にタイマーを設定します。 notimeout(win、TRUE)が呼び出されると、wgetchはタイマーを設定しません。タイムアウトの目的は、ファンクションキーから受信したシーケンスとユーザーが入力したシーケンスを区別することです。

おすすめ記事