![Zsh补全,启用shift-tab](https://linux22.com/image/49207/Zsh%E8%A1%A5%E5%85%A8%EF%BC%8C%E5%90%AF%E7%94%A8shift-tab.png)
当 zsh 向您显示可能完成的菜单时,我希望它允许我用来shift-tab
访问以前的完成条目 - 是否有一个选项可以控制使用什么键来访问以前的完成条目?
如果是这样,我需要在我的文件中添加什么~/.zshrc
才能进行设置。
如果有什么区别的话,我目前可以使用箭头键浏览完成菜单,但我不喜欢这样做,因为箭头键感觉不合适并且使用起来很尴尬。
答案1
您想要将编辑器命令绑定reverse-menu-complete
到menuselect
键盘映射。
bindkey -M menuselect '^[[Z' reverse-menu-complete
我不确定转义序列的可移植性如何^[[Z
,因此您可能需要检查 terminfo(5) 以查看是否有一种方法可以使用数组$terminfo
来正确绑定它。
请注意,menuselect
加载zsh/complist
模块后键盘映射可用。如果您使用 来配置完成系统compinstall
,则该模块通常会在您第一次完成某些操作时自动加载。为了能够将该绑定添加到您的~/.zshrc
,您需要首先手动加载模块:
zmodload zsh/complist
答案2
接受的答案实际上对我不起作用。zsh
如果我尝试在in 中使用菜单完成(设置zstyle ':completion:*' menu select'
),则会崩溃:zmodload zsh/complist
.zshrc
name clash when adding ZLE function `menu-select'
如果您不设置,zstyle ':completion:* menu select
则它不会执行任何操作(因为完成操作不使用菜单),或者如果您不包含,zmodload...
则设置不起作用。
正确且简单的设置是:
bindkey '^[[Z' reverse-menu-complete
这有效两个都如果您启用完成菜单并且“内联”完成建议!