Могу ли я перемещаться по меню автодополнения Tab в zsh с помощью клавиш hjkl, похожих на vi?

Могу ли я перемещаться по меню автодополнения Tab в zsh с помощью клавиш hjkl, похожих на vi?

Я использую меню zsh, основанное на табуляции. Я нажимаю Tabодин раз, и появляется список возможных дополнений. Если я нажму Tabеще раз, я смогу перемещаться по этому списку с помощью клавиш со стрелками. Однако, возможно ли перемещаться по ним с помощью клавиш viтипа -like H, J, K, Lвместо этого?

Я использую режим emacs для ввода командной строки, с bindkey -eпомощью ~/.zshrc. Я также используюзимс zsh. Если это уместно, команды, которые определяют систему автодополнения табуляции, следующие:здесь.

решение1

Да, вы можете это сделать, включив menu select:

zstyle ':completion:*' menu select
zmodload zsh/complist
...
# use the vi navigation keys in menu completion
bindkey -M menuselect 'h' vi-backward-char
bindkey -M menuselect 'k' vi-up-line-or-history
bindkey -M menuselect 'l' vi-forward-char
bindkey -M menuselect 'j' vi-down-line-or-history

решение2

Ближе всего к этому я подошел, используя CTRL- Nи CTRL- Pдля перемещения вперед и назад по списку возможных завершений, вместо Tabи Shift- Tab. Этоявляетсябольше viпохоже на навигацию.

В конфигурационном .zshфайле я достигаю этого с помощью:

bindkey '^n' expand-or-complete
bindkey '^p' reverse-menu-complete

И в связи с этим:

bindkey '^k' up-history
bindkey '^j' down-history
bindkey '^h' backward-delete-char
bindkey '^w' backward-kill-word
bindkey '^r' history-incremental-search-backward

Вот документы дляпривязки.

Связанный контент