Почему я не могу установить \ Ce в inputrc как конец строки для таблицы ключей vi-command? - PullRequest
0 голосов
/ 22 января 2019

У меня есть это в моем .inputrc, но Control-e не перемещается в конец строки в командном режиме.Все остальные привязки работают.

$if mode=vi
    set show-mode-in-prompt on

    set keymap vi-insert
    "\C-e": end-of-line
    "\C-a": beginning-of-line

    set keymap vi-command
    "\C-e": end-of-line
    "\C-a": beginning-of-line
$endif

Я вижу, что это занимает:

$ bind -p | grep 'end-of-line'
"\C-e": end-of-line
"\eOF": end-of-line
"\e[F": end-of-line

И я вижу, что больше ничего не связано с \ Ce:

$ bind -p | grep 'C-e'
"\C-e": end-of-line
"\C-x\C-e": shell-expand-line

Если я установлю его на \ Cl, он будет работать.Итак, что особенного в \ Ce в режиме vi readline, которое я не могу переопределить?

Только другой ключ \ Ce вызывает звуковой сигнал терминала.

В моем .inputrc больше ничего нет

Ответы [ 2 ]

0 голосов
/ 22 января 2019

По словам Чета Рэйми из списка рассылки bug-bash@gnu.org,

Это было там навсегда.Таблица ключей командного режима readline vi по умолчанию имеет ^ E для переключения в режим редактирования emacs.Поскольку для этого bash использует `set -o emacs ', код инициализации bash readline освобождает последовательность клавиш.Он должен убедиться, что функция, к которой он привязан, по-прежнему имеет значение rl_emacs_editing_mode.

Он предоставляет исправление, которое, вероятно, выходит за рамки SO-ответа, поэтому я просто сошлюсь на него:http://lists.gnu.org/archive/html/bug-bash/2019-01/msg00217.html

Обходное решение pynex работает нормально.

0 голосов
/ 22 января 2019

Я только что попробовал, и это также не работает для меня. Но команда bind работает нормально:

bind -m vi-command ' "\C-e": end-of-line '

Кажется, что-то странное в загрузке readline .inputrc. Поэтому в качестве обходного пути вы можете поместить команду bind в свои файлы bashrc.

...