Я использую vi-editing-mode на Bash. Согласно man readline
, есть несколько клавиш привязки по умолчанию, работающих на vi-editing-mode. Некоторые клавиши работают хорошо, но некоторые другие клавиши по умолчанию не работают.
Например, man readline
говорит:
VI Command Mode functions
...
"C-E" emacs-editing-mode
...
Но bind -p
на моем Linux-компьютере написано, что `emacs-editing-mode` не привязан ни к одной клавише.
$ bind -p | grep emacs-editing
# emacs-editing-mode (not bound)
Это нормальная ситуация? Как включить все клавиши привязки по умолчанию vi-editing-mode на bash? Нужно ли мне вручную привязывать клавиши на .inputrc?
решение1
Bash изменяет несколько стандартных привязок readline, включая эту. Код находится вinitialize_readline
функция вbashline.c
.
/* In Bash, the user can switch editing modes with "set -o [vi emacs]", so it is not necessary to allow C-M-j for context switching. Turn off this occasionally confusing behaviour. */
Только клавиши переключения режимов не привязаны. Некоторые дополнительные клавиши привязаны (например, для специфичного для bash завершения, например, M-$
для завершения имен переменных).