Понимание управляющих символов в .inputrc

22

Моя учетная запись Linux на удаленной машине имеет следующую предопределенную .inputrc

"\e[1~": beginning-of-line
"\e[4~": end-of-line
\e[5~”: history-search-backward
\e[6~”: history-search-forward
"\e[3~": delete-char
"\e[2~": quoted-insert
"\e[5C": forward-word
"\e[5D": backward-word
"\e\e[C": forward-word
"\e\e[D": backward-word

set completion-ignore-case on
set bell-style visible
set expand-tilde on
set convert-meta off
set input-meta on
set output-meta on
set show-all-if-ambiguous on
set visible-stats on

Я читаю Баш документации GNU по теме , но я не смог найти раздел , объясняющий , какие последовательности символов \e[1~, \e[5C, \e\e[Dи т.д. означают.

Я думаю , что я где - то читал , что \eозначает , что meta character(я думаю , это Altв моей клавиатуре), но не понимают , что другие управляющие символы [, ~, и 5Dт.д. средний.

Кто-нибудь знает хорошую ссылку на тему?

Амелио Васкес-Рейна
источник

Ответы:

21

Это escape-последовательности управляющего кода ANSI , которые передаются при нажатии различных не буквенно-цифровых клавиш на «терминальной» клавиатуре.

\ e означает символ ASCII "ESCAPE" (восьмеричное 033 шестнадцатеричное 1B десятичное 27). Что является частью введения последовательности команд (CSI).

Escape [ 2 ~последовательность символов, передаваемая при нажатии клавиши с надписью «Вставить» на терминале VT220 (или более поздней версии ) .

Многие из этих соглашений были приняты в программном обеспечении, таких как консоли / оболочки xterm и Linux - часто расширяются различными, иногда несовместимыми способами.

Использование этих последовательностей в функции READLINE в bash описано на страницах руководства для readline.

       Во второй форме, "keyseq": имя-функции или макрос, keyseq отличается
       от имени ключа выше в этой строке, обозначающей всю последовательность клавиш, может
       быть указанным путем размещения последовательности в двойных кавычках. Некоторые GNU
       Можно использовать экранирование ключа стиля Emacs, как в следующем примере, но
       имена символических символов не распознаются.

          "\ Cu": универсальный аргумент
          "\ Cx \ Cr": перечитать файл инициализации
          "\ e [11 ~": "Функциональная клавиша 1"

Чтобы получить список управляющих последовательностей, которым соответствуют клавиши клавиатуры, вы можете использовать команду, например infocmp -L -1илиinfocmp -L -1 xterm

RedGrittyBrick
источник
Отлично!! Это именно то , что я искал. Спасибо @RedGrittyBrick!
Амелио Васкес-Рейна
+1. Я искал Ctrlкод в inputrc-> ENTER= Ctrl+ n.
rendon
@ user1133275: ссылка обновлена, но команда man 3 readline в вашей системе должна дать вам ту же информацию. Команда man 3 readlineтакже работает в WSL на Windows 10 . Если необходимо, вы можете задать новый вопрос о конкретных частях bind -Pвывода, которые вызывают у вас трудности.
RedGrittyBrick