「shift-tab」が端末で「Escape」を発生させるのはなぜですか?

「shift-tab」が端末で「Escape」を発生させるのはなぜですか?

私はこれを偶然見つけました。

私はreadlineモード(でvi実行)を使用しており、特に目立つ。 readlineモードでは何もしないようですが、readlineモードでは挿入モードを終了します(通常モードに入ります)。set -o vibashemacsEscvi

私は文書化された内容Shiftを見ることができず、キーの説明よりも基本的なようです。たぶん読書ラインにありますか?Tabman bashEscbash

Mac OS XとLinuxで動作します。

この文書はどこにありますか?

ベストアンサー1

Shift+Tab複数の端末からこのようなエスケープシーケンスを送信します。

ESC [ Z

Linuxコンソール端末で使用されます。1995年から、xtermの一部2002年から、その時点から1つまたは別の端末をエミュレートするために使用されます。

説明では、terminfoこれは次のように表示されます。

kcbt=\E[Z,

そしてkcbt記録されたterminfo(5):

key_btab                  kcbt   kB   back-tab key

分析的な観点から、これはファンクションキーを押すことと変わりません。 readlineにはキー編集のためのいくつかの特別な場合があります(bashのtermcap文字列テーブルに依存)。lib/readline/terminal.c)、しかしtermcap"kB"はその中にありません。

追加された複雑さで、構成の変更は次のように始まります。2007年これにより、LinuxコンソールのShift-Tabを押すと、次のメッセージが送信されます。その他エスケープシーケンス、つまり

ESC TAB

これは2021年に報告され、ターミナルデータベースが修正されました。これを行うと、Emacs開発者に少しの苦痛があります(参照:メーリングリストスレッド)、そのプログラムは「kB」を確認します。しかし、2022年5月現在の問題は解決されたようです。

いずれにしても bash は termcap 文字列を無視します。

bashにtermcap情報がない場合は依存します.inputrc。どちらにも一致するものがない場合ESC(エスケープされた)文字は、説明したように挿入モードを終了します(最終的にviです)。


これに使用されるエスケープシーケンスは次のとおりです。ECMA-48標準のポストタブ制御シーケンス。この内容はにも記録されています。terminfo(5):

   back_tab                    cbt       bt     back tab (P)

特殊キーに制御シーケンスとして同じエスケープシーケンスを使用することは完全に偶然ではありません。ハードウェア端末は、特別なキーをエコーするためにホストに依存せず、カーソル移動キーが画面の周りにカーソルを移動するローカル編集モードを提供することが多い。 ncurses端末データベースの端末記述の約半分は、特殊キーと制御シーケンスの間の関連性を示しています。

 439 entries with cbt == kcbt
  73 entries with clear == kclr
 383 entries with cub1 == kcub1
 505 entries with cud1 == kcud1
 885 entries with cuf1 == kcuf1
 868 entries with cuu1 == kcuu1
 174 entries with dch1 == kdch1
 186 entries with dl1 == kdl1
 502 entries with home == khome
  52 entries with ich1 == kich1
 139 entries with il1 == kil1

cub1端末記述は通常、2〜3文字の制御シーケンスの代わりに1文字のバックスペースまたは改行文字を使用するため、andの数はsumcud1未満です。それにもかかわらず、439の[投稿]タブは、端末の説明の約4分の1がこの特定の機能を使用していることを示しています。cuf1cuu1

Linuxコンソールは、まずShift-Tabを使用してバックタブエスケープシーケンスを送信しません。次の古いアイテムがあります。アンアーバーこの機能を使用するAT&T項目も同様です。後者はビットプロテクターのマニュアルはほとんどありませんが、AT&T 610そしてAT&T 630マニュアル提供。

おすすめ記事