zsh のタブ補完メニューを vi のような hjkl キーで操作できますか?

zsh のタブ補完メニューを vi のような hjkl キーで操作できますか?

私は zsh のメニューベースのタブ補完を使用しています。Tab一度押すと、補完候補のリストが表示されます。もう一度押すと、矢印キーでこのリストを移動できます。ただし、代わりに、、、などのキーを使用してTab移動することは可能ですか?viHJKL

私はコマンドライン入力に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

私がこれに最も近づいたのは、and -の代わりにCTRL-NCTRL-を使用してP、可能な補完のリストを前後に移動することです。これはTabShiftTabより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

ドキュメントはこちらバインディング

関連情報