Aha! Я посмотрел на источник readline и обнаружил, что вы можете сделать это:
"\M-v": vi-editing-mode
"\M-e": emacs-editing-mode
Похоже, что переключения нет, но этого, вероятно, достаточно хорошо!
Ради потомков, вот мой оригинальный ответ, который может быть полезен людям, пытающимся делать вещи, для которых нет функции readline.
Вот способ, которым вы можете настроить его, очистив текущую командную строку в процессе. Не то, что вы хотите, я знаю, но, возможно, это поможет кому-то еще, кто найдет этот вопрос. В ~ / .inputrc:
"\M-v": "\C-k\C-uset -o vi\C-j" # alt (meta)-v: set vi mode
"\M-e": "\C-k\C-uset -o vi\C-j" # alt (meta)-e: set emacs mode
или для переключения ... это должно работать:
"\M-t": "\C-k\C-u[[ \"$SHELLOPTS\" =~ '\\bemacs\\b' ]] && set -o vi || set -o emacs\C-j"
Это, по сути, псевдонимы, сделанные на один шаг дальше для сопоставления с ключами в readline, чтобы вам не приходилось вводить псевдоним и нажимать ввод.