3

Если в приложениях Readline с включенным режимом vim в ~/.inputrc (set editing-mode vi) есть ли способ связать клавишу со стрелкой <Up> в режиме vi-insert ? Для отображения предыдущего элемента истории, например. Кажется, я должен сначала нажать клавишу ESC, только потом это работает.

Вот моя попытка заставить его работать (~/.inputrc):

$if mode=vi
  # INSERT MODE
  set keymap vi-insert
  "\e[A": history-search-backward # up-arrow
  "\e[B": history-search-forward  # down-arrow

Также обратите внимание, что когда я нажимаю Ctrl+v а затем <Up> , он печатает ^[[A

Мне удалось заставить его работать так, как я хочу, в zsh:http://paulgoscicki.com/archives/2012/09/zsh-vi-mode-with-emacs-keybindings/

1 ответ1

0

То, что вы хотите, уже работает в bash : я могу использовать стрелку вверх для отображения предыдущего элемента истории в режиме vi-insert. Следующая команда показывает, как она настроена. Возможно, вы путаете history-search-backward от history-prev с предысторией ?

$ bind -m vi-insert -p | grep hist
# beginning-of-history (not bound)
# dynamic-complete-history (not bound)
# end-of-history (not bound)
"\C-s": forward-search-history
# history-and-alias-expand-line (not bound)
# history-expand-line (not bound)
#  (not bound)
# history-search-forward (not bound)
"\eOB": next-history
"\e[B": next-history
# non-incremental-forward-search-history (not bound)
# non-incremental-forward-search-history-again (not bound)
# non-incremental-reverse-search-history (not bound)
# non-incremental-reverse-search-history-again (not bound)
"\eOA": previous-history
"\e[A": previous-history
"\C-r": reverse-search-history
# vi-fetch-history (not bound)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .