我可以使用類似 vi 的 hjkl 鍵來導覽 zsh 的 tab 補全選單嗎?

我可以使用類似 vi 的 hjkl 鍵來導覽 zsh 的 tab 補全選單嗎?

我使用 zsh 的基於選單的選項卡補全。我按Tab一次,就會出現可能完成的清單。如果我Tab再次按下,我可以使用箭頭鍵瀏覽此清單。但是,是否可以使用vi類似HJKL鍵來導航它們?

我使用 emacs 模式進行命令列輸入,使用bindkey -ein ~/.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-NCTRL-P在可能的完成列表中向前和向後移動,而不是TabShift- 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

這是以下的文檔綁定

相關內容