4

Я хочу установить привязку клавиш в bash для команды readline «history-search-backward» на комбинацию Control+ некоторый другой ключ (в качестве примера я использую 2 ), но я не могу этого сделать.

(edit: похоже, проблема заключалась в том, что я выбрал 2 в качестве примера ключа). Я пытался с \ Cl, и он работает. Я все равно приму ответ, если кто-то объяснит, почему 2 не работает)

После нескольких попыток мой ~/.inputrc теперь выглядит так

set bind-tty-special-chars off
"\C-2": history-search-backward

но это не работает и связывает -p | grep "-2" ничего не дает. Если я пытаюсь что-то без контрольного ключа, это работает:

"C-2": history-search-backward

Я могу искать в истории, нажимая последовательность C + - + 2.

bind -p дает управление в форме \C, например:

"\C-w": unix-word-rubout

Я пробовал разные форматы в моем inputrc:

Control-2: history-search-backward
Ctrl-2: history-search-backward
"Control-2": history-search-backward

но ничего не работает.

"\e2": history-search-backward

работает, если я нажимаю Escape с последующим 2.

Кто-нибудь может помочь?

Настроить:
Fedora 11:
Bash версия 4.0.23(1)
GNU Readline 5.2 (в соответствии со страницей руководства)

1 ответ1

5

Там нет кода ASCII для Control-2. Control-@ через Control-_ соответствуют контрольным кодам от 0x00 (NUL) до 0x1F (разделитель единиц). Например, код для Control-I - это код для «I» (0x49) минус 0x40 = 0x09 (HT, он же вкладка). Там нет определения набора для Control+(какой-то другой символ не в блоке @ to _).

Программы, которые выполняют свою собственную обработку клавиатуры, могут интерпретировать элемент управления как угодно в сочетании с любыми другими клавишами. Но такие программы, как bash, которые читают свои данные через терминал, даже не видят Control-2.

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