Почему readline не сбрасывает `backward-delete-char`?

Мне нужно привязать код 127 (он же DEL, он же ^?) к delete-char.

Если я поставлю DEL: delete-char в ~/.inputrc, это не сработает. Это потому, что этот код используется backward-delete-char по умолчанию.

Итак, сначала мне нужно освободить этот код от backward-delete-char:

$ bind -u backward-delete-char

Но почему-то не сбрасывается:

$ bind -q backward-delete-char
backward-delete-char can be invoked via "\C-?".

Что нужно изменить в исходном коде библиотеки readline (для локального использования), чтобы отвязать \C-? от backward-delete-char?

N.B. Если я отключу, например, delete-char, он будет работать безупречно:

$ bind -u delete-char
$ bind -q delete-char
delete-char is not bound to any keys.

person Igor Liferenko    schedule 05.03.2018    source источник


Ответы (1)


Запуск GNU bash, version 4.4.19(1)-release (x86_64-apple-darwin16.6.0) вижу то же самое. Я могу отключить тот, который я хотел, с помощью этого: bind -m emacs-meta -u backward-kill-word

По словам сопровождающего Чета:

Если вы не используете -m' option, the commands act on the current keymap, which is eitheremacs' или (обычно) `vi-insert'

Я обнаружил, что его команды-примеры не совсем работают, и работает только -m emacs-meta, но я не уверен, как точно определить, какая раскладка применяется.

Процесс обнаружения: поиск в списке рассылки (погуглил и site:http://lists.gnu.org/archive/html/bug-bash/ "bind -u") и нашел: Re: Некоторые функции чтения не могут быть отвязаны с помощью bind -u

person Ben Creasy    schedule 05.07.2018
comment
Примечание. Недавно я вернулся и попробовал это на beginning-of-line, но это не сработало даже с различными раскладками клавиш, поэтому я отвязывал последовательности клавиш одну за другой (например, bind -r '\C-a') - person Ben Creasy; 20.09.2018