19

Моя учетная запись 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 ответ1

20

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

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

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

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

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

       In  the  second  form,  "keyseq":function-name or macro, keyseq differs
       from keyname above in that strings denoting an entire key sequence  may
       be  specified  by  placing the sequence within double quotes.  Some GNU
       Emacs style key escapes can be used, as in the following example,  but
       the symbolic character names are not recognized.

          "\C-u": universal-argument
          "\C-x\C-r": re-read-init-file
          "\e[11~": "Function Key 1"

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .