最近、私はbashショートカットを見直し、私のtmuxアクティベーションキーに適したショートカットを見つけようとしました。
私はbashショートカットには使用されないctrl + m
のが面白いと思います。ctrl + q
https://en.wikipedia.org/wiki/Bash_(Unix_shell)。
なぜ使用されないのですか?ctrl + m
とても便利だと思います。
これら2つの組み合わせを使用するように設計されていますかDIY (define it yourself)
?それとも別の話がありますか?
答え1
Ctrl + Mは、ターミナル(RET)のEnterキーと同じ文字を送信します。プログラムはキーを区別できないため、キーを個別に構成することはできません。
Ctrl+Q が使用されました。XONデフォルトでは、Bashはこれを使用できませんが、tmuxは生の入力モードを使用するため、tmuxで使用できます。
GUIプログラムは修飾子Ctrlを使用し、ショートカットとしてCtrl + mを使用してmキーを押すとキーボードから読み取ることができますが、シェルまたはターミナルプログラムはCtrl +キーの組み合わせを0から26のASCII文字で受け取ります。
Ctrl+@ = 0
Ctrl+A = 1
Ctrl+B = 2
など。これを試して値を見ることができます
cat ctrlkeys <<EOF
^A^B^C^D^E^F
EOF
od -c ctrlkeys
0000000 001 002 003 004 005 006 \n
値を入力するには、Ctrl + [af]を押す前にCtrl + vを押して、その値が生の値として解釈されないようにします。
ascii(7) テーブルを見ると、テーブルの制御コードが表示され、左側には対応する文字 @..Z があります。例えば
015 13 0D CR '\r' (carriage ret) 115 77 4D M
または
011 9 09 HT '\t' (horizontal tab) 111 73 49 I
Bashより前の制御コードの解釈の次のステップはsttyです(ターミナル設定を変更して印刷します)。
stty -a
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O;
lnext
start
orとの意味についてはstty(1)を参照してくださいstop
。
readline(3) も参照してください。 bashや他のGNU cliプログラムはこのライブラリを使って入力行を制御し、もちろんbash(1)/ READLINE(bashのマニュアルページのreadlineセクション)を制御するからです。
注:XYZ(NUM)は、セクションNUMのマニュアルページXYZを意味するため、結果はですman NUM XYZ
。