当输入为空时,如何绑定 Zsh 中的双击键?

当输入为空时,如何绑定 Zsh 中的双击键?

我尝试clear仅当 zsh shell 中的终端输入为空时才将双击绑定到命令。

到目前为止,我所实现的总是使用双击删除,但如果可能的话,我想添加条件,将以下内容添加到 .zshrc:

bindkey -s '\t\t' 'clear^M'

也许,我是否需要使用键绑定调用自定义函数来检查输入是否为空?

有什么办法可以解决这个问题吗?

谢谢!

答案1

可以使用以下代码实现此行为:

if ! typeset -f magic-double-tab-cmd >/dev/null; then
function magic-double-tab-cmd {
    echo 'clear'
}
fi

function magic-double-tab {
    # Only run magic-double-tab commands when the command line is empty and
    # when on the first line (PS1)
if ! (( $#BUFFER )) && [[ "$CONTEXT" == start ]]; then
    BUFFER=$(magic-double-tab-cmd)
    zle accept-line -w
fi
}
zle -N magic-double-tab
bindkey '\t\t' magic-double-tab

摘自魔法输入存储库。

这与 magic-enter 插件的做法类似,但使用的是 tab 键。

相关内容