Связывание Readline не работает с модификаторами Control и Shift

Связывание Readline не работает с модификаторами Control и Shift

Я настраиваю привязки клавиш GNU Readline в Bash. В частности, я хочу добиться следующего эффекта отображения:

Control' ==> 'I'

ControlShift' ==> "I"

Control` ==> `I`

Control[ ==> [I]

ControlShift[ ==> {I}

где Iуказывает положение курсора после расширения.

Я попробовал следующую конфигурацию в моем ~/.inputrc. Однако только <C-`>отображение работает так, как ожидалось:

$include /etc/inputrc
$if mode=emacs
"\C-\'": "\'\'\C-b"
"\C-`": "``\C-b"
"\C-\"": "\"\"\C-b"
"\C-{": "{}\C-b"
"\C-[": "[]\C-b"
$endif

Мне интересно, что не так с моей конфигурацией и как правильно выполнить эти сопоставления (если это возможно)?

решение1

В терминале вы, как правило, не можете получитьвсекомбинации модификаторов control и shift, которые будут иметь различные значения:

  • основа дляконтрольисдвигиз схем US-ASCII (и подобных), которые определяютконтрольисдвигдля буквенных символов плюснемногознаки препинания.
  • комбинацияконтроль+шифтобычно не имеет никакого эффекта, за исключениемособенныйключи.
  • некоторые терминалы определяют управляющие последовательности для управления/переключения сособенныйклавиши (такие как клавиши курсора и функциональные клавиши). Клавиша tabне является одной из этих клавиш.

Ниже представлен снимок экрана, иллюстрирующий управляющие символы с использованием ASCII:

введите описание изображения здесь

Связанный контент