Wie kann ich die Tab-Vervollständigung für eine Fischfunktion / einen Alias ​​aktivieren?

3

Vielleicht ist es einfacher, hier nur ein Beispiel zu verwenden. Ich habe eine Funktion ss, die nur aufruft:

sudo systemctl $argv

Die Tab-Vervollständigung funktioniert einwandfrei mit dem vollständigen Befehl, jedoch nicht für die ssFunktion. Dh

ss start mys<tab>

versucht, aus dem Dateisystem zu vervollständigen, anstatt die Vervollständigungsfunktion für den systemctlBefehl zu verwenden.

mkaito
quelle

Antworten:

4

Nach einigem Nachforschen scheint es bei Fisch zwei bevorstehende Features zu geben, von denen keines in der aktuellen stabilen Version (2.1.1) enthalten ist.

Das erste ist ein --wrapsArgument für functionund complete, das die Vererbung der Vervollständigung ermöglicht. function foo --wraps=bargibt fooalle Vervollständigungen an, die für registriert sind bar.

Das zweite sind Abkürzungen durch den abbrBefehl, die ähnlich wie Abkürzungen für vim funktionieren. abbr -a gco='git checkout'registriert eine Abkürzung, gcoauf die erweitert werden soll git checkout. Wenn Sie gcogefolgt von einem Leerzeichen oder einer Eingabetaste eingeben, wird die Abkürzung erweitert, wodurch natürlich jede registrierte Vervollständigung funktioniert.

Ohne eine dieser Funktionen müssen Sie nur noch ein benutzerdefiniertes Vervollständigungsskript für Ihre Funktion / Ihren Alias ​​schreiben, was albern ist.

mkaito
quelle
Beide Funktionen sind jetzt Bestandteil von Fisch. Prost!
Railgun