私はこれを偶然見つけました。
私はreadlineモード(でvi
実行)を使用しており、特に目立つ。 readlineモードでは何もしないようですが、readlineモードでは挿入モードを終了します(通常モードに入ります)。set -o vi
bash
emacs
Escvi
私は文書化された内容Shiftを見ることができず、キーの説明よりも基本的なようです。たぶん読書ラインにありますか?Tabman bash
Escbash
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がこの特定の機能を使用していることを示しています。cuf1
cuu1
Linuxコンソールは、まずShift-Tabを使用してバックタブエスケープシーケンスを送信しません。次の古いアイテムがあります。アンアーバーこの機能を使用するAT&T項目も同様です。後者はビットプロテクターのマニュアルはほとんどありませんが、AT&T 610そしてAT&T 630マニュアル提供。