【发布时间】:2021-02-13 13:49:09
【问题描述】:
有没有办法检查标签完成菜单是否在 ZSH 中打开?
我问这个问题是因为我想将空格键绑定到 accept-search 以便我可以接受使用 space 键完成,但我想以不干扰默认值的方式进行space 键的行为(插入 space 字符)。另外,我想要这个,因为我不喜欢用space 关闭完成菜单时会插入一个空格。
reddit 中的某个人帮助我完成了这个 sn-p,但我需要一种方法来检查自动完成菜单是否打开。
function space-or-accept-suggestion() {
if <INSERT WAY TO CHECK IF AUTOCOMPLETION MENU IS OPEN>; then
zle accept-search
else
zle self-insert
fi
}
zle -N space-or-accept-suggestion
bindkey -M emacs ' ' space-or-accept-suggestion
【问题讨论】:
-
你需要更清楚你想要检查的状态。据我所知,你所描述的无论如何都是默认的。 “自动完成”与 tab 键触发的完成相反,通常只能通过一些插件来实现,比如自动建议。如果您的意思是来自 complist 模块的菜单选择处于活动状态,则它使用
menuselect键盘映射,因此您可以为其绑定不同的空间。但默认情况下,它会被接受并插入一个空格。 -
更新了问题。它是标签触发的完成。谢谢!
标签: zsh oh-my-zsh zshrc zsh-completion zsh-zle