GNU/Linux >> Linux の 問題 >  >> Linux

Ctrl+mとCtrl+qがBashショートカットで使用されないのはなぜですか?

最近、bashショートカットキーを確認し、tmuxアクティベートキーに適切なキーを見つけようとしています。

ctrl + mが面白いと思います およびctrl + q https://en.wikipedia.org/wiki/Bash_(Unix_shell)によると、bashショートカットでは使用されません。

なぜ使用されないのですか? ctrl + mを感じます とても便利です。

これらの2つの組み合わせは、DIY (define it yourself)の設計によるものですか。 利用方法?または別の話がありますか?

承認された回答:

Ctrl + Mは、ターミナルのEnterキーと同じ文字(RET)を送信します。プログラムにはそれらを区別する方法がないため、これらのキーを個別に構成することはできません。

Ctrl + QはデフォルトでXONにすでに使用されているため、Bashでは使用できませんが、tmuxはraw入力モードを使用するため、tmuxでは引き続き使用できます。

GUIプログラムはキーボードから読み取り、キーmが修飾子Ctrlで押され、ショートカットとしてCtrl + mを使用しますが、シェルまたは任意の端末プログラムは、0から26までのASCII文字と同じようにCtrl+Keyの組み合わせを受け取ります

[email protected] = 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+[a-f]の前に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の意味については、stty(1)を参照してください。 またはstart およびstop

また、readline(3)も参照してください。bashおよびその他のGNU cliプログラムは、そのライブラリを使用して入力行を制御します。もちろん、bash(1)/ READLINE、bashマニュアルページのreadlineセクションです。

関連:変数の値をbashで引用符で囲むか、囲まないか。

注:XYZ(NUM)は、セクションNUMのマニュアルページXYZを意味するため、man NUM XYZの結果です。 。


Linux
  1. パスワードハッシュとその必要性

  2. Env X =(){:;}; Command’Bashは、なぜそれが安全でないのですか?

  3. Bashの正規表現が変数であり、直接ではない場合にのみ機能するのはなぜですか?

  1. なぜRm-rfであり、Rmdir -rfではないのですか?

  2. Bash while ループで and を使用する

  3. Bash - 日付コマンドとスペース

  1. BashForループガイドと例

  2. Linux が Unix に基づいており、Linux が無料であるのに、なぜ Unix がまだ使用されているのですか?

  3. 「make clean」と「make mrproper」の両方が使用されるのはなぜですか?