¿Cómo se vincula la tecla de doble toque en Zsh solo si la entrada está vacía?

¿Cómo se vincula la tecla de doble toque en Zsh solo si la entrada está vacía?

Estoy intentando vincular la doble pestaña al clearcomando solo si la entrada en la terminal está vacía en zsh Shell.

Lo que he logrado hasta este punto es eliminar siempre con doble pestaña pero quiero agregar la condición si es posible, agregando lo siguiente al .zshrc:

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

Tal vez, ¿necesito llamar a una función personalizada con la combinación de teclas para verificar si la entrada está vacía?

¿Alguna idea para solucionar esto?

¡Gracias!

Respuesta1

Este comportamiento se puede lograr con este código:

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

Tomado de laentrada mágicarepositorio.

Este es un enfoque similar al que hace el complemento magic-enter, pero con una pestaña.

información relacionada