Почему `bind` и` .inputrc` ведут себя по-разному?

1237

Я пытаюсь сделать правильную вещь и поместить свои привязки клавиш в ~/.inputrc.

Тем не менее, оказывается, что я должен изменить

bind '"\e\C-j":"\e[1~quiet \e[4~\n"' 

в

"\e\C-j": "\eOHquiet \eOF\n" 

Теперь \eOH(привязка nav-block-pos1 к beginning-of-line) и \eOF( привязка nav-block-end к end-of-line) сами являются привязками в моей конфигурации, на которые я, возможно, не всегда могу положиться.

Поэтому основной вопрос заключается в том, почему привязка к num-block-pos1 ( \e[1~) и num-block-end ( \e[4~) работает, bindно не в моем ~/.inputrc?


Редактировать:

Все становится еще сложнее, теперь, когда я понял, что это \e\C-jработает только для Gnome Terminial (или, возможно, xterm, кто знает ...).

Для моего TTY это должно быть

"\e\C-m": "\e[1~_quiet \e[4~\n" 

Так что разные VT имеют разные реализации того, как интерпретировать ключи или как?

13
Это задокументировано в руководстве _GNU Readline User Interface_, раздел 1.3. Опция `keymap` используется для установки того, какой тип представления ключей используется в определениях привязок клавиш. Соответствующая информация: http://superuser.com/questions/286781/readline-difference-between-vi-vi-move-vi-command-vi-insert-keymaps http://cnswww.cns.cwru.edu/php/ chet / readline / rluserman.html # SEC9 https://wiki.archlinux.org/index.php/Readline Ярослав Рахматуллин 11 лет назад 0
@ ЯрославРахматуллин Как именно это относится к разнице в поведении между использованием `bind` и использованием` inputrc` для фактической привязки. Разве они не должны использовать те же настройки? 11 лет назад 0

1 ответ на вопрос

2
chepner

Ваш эмулятор терминала может работать в одном из двух режимов: режим приложения и режим курсора (см. Http://homes.mpimf-heidelberg.mpg.de/%7Erohm/computing/mpimf/notes/terminal.html ). Это зависит от того, в каком режиме работает ваше конкретное приложение, которое определяет, какую escape-последовательность вам нужно отправить.

Похожие вопросы