Чому Ctrl + m і Ctrl + q не використовуються в ярликах bash?


15

Нещодавно я переглядав клавіші швидких клавіш bash і намагаюся знайти відповідну для моєї клавіші активації tmux.

Я знаходжу цікавим , що ctrl + mі ctrl + qне використовуються в ярликах Баш, згідно https://en.wikipedia.org/wiki/Bash_(Unix_shell) .

Чому вони не використовуються? Я відчуваю себе ctrl + mдосить зручно.

Чи ці дві комбінації призначені дизайном для DIY (define it yourself)використання? Або є інша історія?


1
Використання ALT + mще зручніше імхо.
Рольф

Відповіді:


16

Ctrl + M надсилає той самий символ (RET), що і клавіша Enter у терміналі. Програми не мають можливості їх розділити, тому ці клавіші не можна налаштувати окремо.

Ctrl + Q вже використовується для XON за замовчуванням, тому він не може бути використаний Bash, але ви все одно можете мати можливість використовувати його в tmux, оскільки tmux використовує режим необмеженого введення.

Програма GUI може прочитати з клавіатури, що клавіша m була натиснута модифікатором Ctrl і використовувати Ctrl + m як ярлик, але оболонка або будь-яка програма терміналу отримує комбінації клавіш Ctrl + так само, як символи ascii від 0 до 26

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 + v перед Ctrl + [af], щоб не інтерпретувати їх як необроблене значення.

Переглядаючи таблицю 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;

див. stty (1) для значень lnextабо startі stop.

Також див. Readline (3), оскільки bash та інші програми кліпів GNU використовують цю бібліотеку для керування вхідними лініями і, звичайно, bash (1) / READLINE, розділ для читання на сторінці керівництва bash.

Примітка: XYZ (NUM) означає сторінку керівництва XYZ з розділу NUM, тому результат man NUM XYZ.


1
Bash має за замовчуванням прив'язку для Cs (XOFF), тому вони могли також поставити і для Cq.
Жил "ТАК - перестань бути злим"

Власне, за замовчуванням бібліотека Readline GNU, яку використовує Bash, пов'язує C-qте саме C-v, що і клон функції Emacs, quoted-insertякий корисний для з'ясування кодів евакуації, згенерованих ключами та комбінаціями клавіш. Ось відповідна частина посібника Readline
ssokolow
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.