我可以使用类似 vi 的 hjkl 键导航 zsh 的选项卡完成菜单吗?

Spa*_*awk 14 zsh autocomplete line-editor

我使用 zsh 的基于菜单的选项卡完成。我按Tab一次,会出现一个可能完成的列表。如果我Tab再次按下,我可以使用箭头键浏览此列表。但是,是否可以使用vi-like H, J, K,L键来导航它们?

我使用 emacs 模式进行命令行输入,bindkey -e~/.zshrc. 我也将zim与 zsh 一起使用。如果相关,指定制表符完成系统的命令在这里

jas*_*yan 20

是的,您可以通过启用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
Run Code Online (Sandbox Code Playgroud)


小智 5

我最接近的是使用CTRL-NCTRL-P在可能的完成列表中向前和向后移动,而不是使用TabShift- Tab。这更像vi导航。

在配置.zsh文件中,我使用以下方法实现:

bindkey '^n' expand-or-complete
bindkey '^p' reverse-menu-complete
Run Code Online (Sandbox Code Playgroud)

并且相关地:

bindkey '^k' up-history
bindkey '^j' down-history
bindkey '^h' backward-delete-char
bindkey '^w' backward-kill-word
bindkey '^r' history-incremental-search-backward
Run Code Online (Sandbox Code Playgroud)

这是绑定的文档。

  • 太好了,谢谢。此外,可以在`bindkey` 命令中添加`-M menuselect` 来限制此处的模式。 (2认同)