
Ich versuche, die doppelte Tabulatortaste clear
nur 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.