Alias-Leerbefehl im Terminal

9

Ich möchte mein Terminal löschen, wenn ich einen leeren Befehl abschicke. Mit anderen Worten, ich möchte anrufen, clearwenn ich Enterauf eine leere Zeile drücke. Ist das möglich?

Ich verstehe, dass das Terminal nicht so funktioniert, aber es könnte einen netten Hack geben, wie das Binden der Eingabetaste und das Überprüfen des Terminals oder so.

Mikulas Dite
quelle

Antworten:

12

Diese Funktion sollte tun, was Sie wollen; Alles, was es tut, um zu überprüfen, ob die aktuelle Eingabeaufforderung input ( $BUFFER) leer ist ( -z):

magic-enter () {
        if [[ -z $BUFFER ]]
        then
                zle clear-screen
        else
                zle accept-line
        fi
}

Definieren Sie es als Widget mit

zle -N magic-enter

und binden Sie es dann an [ENTER]:

bindkey "^M" magic-enter

Wenn Sie eine nicht standardmäßige Schlüsselbindung für verwenden [Enter], passen Sie die Zeile mit an zle accept-line. Sie können mit überprüfen bindkey | grep "\^M".

mpy
quelle