AltUpを押すとA
端末画面に印刷されます。押してAltDown印刷してもB
同じことが起こります。
私が知っている他のキャラクター。
AltLeft=D
とAltRight=C
このコマンドの目的は何ですか?
ベストアンサー1
端末の設定方法に応じて、入力はキーをAlt+Key順番に入力するのと同じであるため、ESC文字(またはまたは)の後にその文字または文字シーケンスが送信されます。EscKey\e
^[
\033
Key
を押すと、Upほとんどの端末エミュレータはアプリケーションキーボードモードになっているかどうかに応じて3文字程度を\033[A
送信します。\033OA
1つ目は、端末に出力するときにカーソルを上に移動するエスケープシーケンスに対応します。これにより:
printf '\nfoo\033[Abar\n\n'
前の行の後に書かれたものを見ることbar
ができます。foo
これにより:
stty -echoctl; tput rmkx; read foo
矢印キーを押すと、カーソルが動いていることがわかります。
アプリケーションが端末でその文字シーケンスを好むかzsh
読み取ると、それはterminfoデータベース(関数)を介して時間内に送信されたエスケープシーケンスであることを知っているので、これを「up」操作として解釈します。vi
kcuu1
Up
sendなどのAlt-Up一部の端末には(または)などのエスケープシーケンスがあり、他の端末では、などのキーの組み合わせで使用するときに、このタイプのキーに対して別々のエスケープシーケンスを提供または提供します。rxvt
eterm
\033
Up\033\033[A
\033\033OA
xterm
gnome-terminal
AltShiftCtrl
通常\033[1;3A
はに送信されますAlt-Up。
端末に送信されると、このシーケンスもカーソルを上に移動します(2番目の引数(3)は無視されます)。該当事項はありません鍵盤Alt-Upキーなので、受信または発信時に送信されるのと同じシーケンスです。アプリケーションキーボードモード。
今や\033\033[A
、\033[1;3A
多くのアプリケーションはこれらのシーケンスの用途を知りません。これらのキーの組み合わせで送信される文字を定義する機能がないため、terminfoデータベースは役に立ちません。
彼らは順序を説明するために最善を尽くします。たとえば、エスケープシーケンスとしてbash
解釈され、これについて何も知らないので、何もしません。これに続いて、既知の一致する文字シーケンスが見つからないとすぐに読み取りを停止します。エスケープシーケンスが何で始まるかわからないので、そのシーケンスをスキップして残りの部分を読み、行エディタに挿入します。\033[1;3
A
zsh
\033[1
;3A
多くのアプリケーション(たとえば、vi
ベースのアプリケーション(使用されている修正バージョンに注意))を使用すると、任意の文字シーケンスのバインディングを追加できます。zsh
readline
gdb
bash
bash
readline
たとえば、次のようにzsh
バインドできます。Alt-UpAlt-Down
bindkey '\e[1;3A' history-beginning-search-backward
bindkey '\e[1;3B' history-beginning-search-forward
これは、現在のコマンドラインから現在のカーソル位置までコマンドライン履歴を使用して前後に検索するため、前のコマンドを呼び出すのに非常に便利です。