Wie binden Sie die Doppelklick-Taste in Zsh nur, wenn die Eingabe leer ist?

Wie binden Sie die Doppelklick-Taste in Zsh nur, wenn die Eingabe leer ist?

Ich versuche, die doppelte Tabulatortaste clearnur dann an den Befehl zu binden, wenn die Eingabe im Terminal in der ZSH-Shell leer ist.

Bisher habe ich immer mit doppelter Tabulatortaste gelöscht, aber ich möchte, wenn möglich, die Bedingung hinzufügen, indem ich Folgendes zur .zshrc hinzufüge:

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

Muss ich vielleicht eine benutzerdefinierte Funktion mit der Tastenkombination aufrufen, um zu prüfen, ob die Eingabe leer ist?

Irgendwelche Ideen, um dieses Problem zu lösen?

Danke!

Antwort1

Dieses Verhalten kann mit diesem Code erreicht werden:

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

Entnommen aus demmagische EingabeRepository.

Dies ist ein ähnlicher Ansatz wie beim Magic-Enter-Plugin, jedoch stattdessen mit der Tabulatortaste.

verwandte Informationen