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

Моя учетная запись 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 bash, но мне не удалось найти раздел, объясняющий последовательность символов \e[1~, \e[5C, \e\e[Dи т. д. значит.

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

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

1 ответ

Решение

Это 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

Другие вопросы по тегам