Abbrechen der Fertigstellung der Registerkarte "zsh"

10

Gibt es eine Möglichkeit, einen Abschluss nach dem Start abzubrechen? Manchmal drücke ich törichterweise die Tabulatortaste, um Ziele automatisch zu vervollständigen (nur aus purer Trägheit), und muss dann länger warten, als wenn ich nur das gesamte "Installieren" oder "Auschecken" selbst eingegeben hätte.

Ich habe auf der zshzle-Manpage nichts Besonderes gesehen, aber vielleicht habe ich etwas verpasst? Haben andere Muscheln diese Fähigkeit?

EDIT : Triviale Antwort. Also stattdessen: Gibt es eine Möglichkeit für zsh, zu schätzen, dass die Ausführung der Registerkarte relativ lange dauern würde, und stattdessen zu fragen, ob der Benutzer dies wünscht?

Zorawar
quelle
2
ctrl-cfunktioniert nicht?
llua
1
Verdammt, das tut es! Das ist mir aus irgendeinem Grund nicht eingefallen. Ich denke, ich dachte, Strg-C hätte etwas Dramatischeres getan. Frage löschen? (Oder möchten Sie vielleicht eine Wiederholung?)
Zorawar
1
Ich glaube nicht, dass es eine Möglichkeit gibt, die Zeit abzuschätzen, die für die Fertigstellung eines Tabs benötigt wird. Sie können Ergebnisse zwischenspeichern, aber das ist es wahrscheinlich.
Ulrich Dangel
1
@ Zorawar, ich versuche nur zu helfen, nicht Highscore zu bekommen:]
llua
1
Strg-C funktioniert nicht für alle Vervollständigungsmechanismen von zsh. Wenn jemand andere Möglichkeiten kennt, dies zu stoppen. Es wäre toll, diese Antwort hier zu haben.
xer0x

Antworten:

7

Ein SIGINT unterbricht den aktuellen Abschlussvorgang und bringt Sie zurück zum Zeileneditor. Drücken Sie also Ctrl+ C. Der Effekt ist möglicherweise nicht unmittelbar: Der Interpreter sucht nur an bestimmten Punkten während der Ausführung nach Signalen (sie sind jedoch häufig), und das Signal kann eine Weile dauern, wenn der zsh-Prozess in einem Systemaufruf blockiert wird (z. B. wenn dies der Fall ist) Warten auf eine Antwort eines Dateisystems).

Wenn Sie zum falschen Zeitpunkt Ctrl+ drücken Cund zum Zeitpunkt der Signalübermittlung noch keine Fertigstellung vorliegt, wird Ihre aktuelle Befehlszeile leider abgebrochen. Dies ist schwer zu beheben, ohne zwei verschiedene Interrupt-Schlüssel zu haben, einen zur Vervollständigung und einen für den Rest, und ich bin mir nicht sicher, ob zsh dies unterstützt.

Es ist nicht wirklich machbar, Sie zu warnen, wenn eine Fertigstellung lange dauern könnte. Die Geschwindigkeit einer Abschlussfunktion wird häufig hauptsächlich von der Geschwindigkeit bestimmt, mit der einige Informationen aus dem Dateisystem gelesen werden können. Ob sich diese Informationen im Cache befinden oder nicht, wie viel vorhanden ist und um welche Art von Dateisystem es sich handelt (z. B. Ramdisk, Festplatte oder NFS-Mount), hat großen Einfluss.

Gilles 'SO - hör auf böse zu sein'
quelle
1
Möglicherweise wäre ein konfigurierbares Zeitlimit für die Tab-Vervollständigung eine vernünftige Standardeinstellung.
Antiduh
3

Sie können ctrl+ verwenden k, um die automatische Vervollständigung abzubrechen. Allerdings kann ich auch keine Informationen aus zsh guide finden , aber es bricht die automatische Vervollständigung ab.

j_tt2011
quelle