Ich möchte Tabulatorvervollständigung für meine Befehlszeilen-Aliase erhalten. Angenommen, ich habe den folgenden Alias definiert:
alias apt-inst='sudo aptitude install'
Gibt es eine Möglichkeit, die von aptitude bereitgestellten Vervollständigungen zu erhalten, wenn ich die Tabulatortaste drücke? dh wenn ich 'sudo aptitude install gnumer' schreibe und tab drücke, vervollständigt aptitude dies mit gnumeric, oder wenn Ungewissheit bestand, listet es alle verfügbaren Pakete auf, die mit gnumer beginnen. Wenn ich es mit meinem Alias mache, nichts - keine Vervollständigung.
bash
alias
autocomplete
levesque
quelle
quelle
Antworten:
Es gibt einen tollen Thread dazu in den Ubuntu-Foren . Ole J schlägt die folgende Alias-Vervollständigungsdefinitionsfunktion vor:
Verwenden Sie diese Option, um eine Vervollständigungsfunktion für Ihren Alias zu definieren, und geben Sie diese Funktion als Vervollständigungsfunktion für den Alias an:
Ich bevorzuge es, Aliase zu verwenden, um vorhandenen Programmen immer verwendete Argumente hinzuzufügen. Zum Beispiel
grep
möchte ich mit immer Geräte und Binärdateien überspringen, also erstelle ich einen Alias fürgrep
. Zum Hinzufügen neuer Befehle verwendegrepbin
ich beispielsweise ein Shell-Skript in meinem~/bin
Ordner. Befindet sich dieser Ordner in Ihrem Pfad, wird er automatisch vervollständigt.quelle
complete -o default -F ...
statt ,complete -F ...
um Dinge wie Dateiname Auto-Vervollständigung richtig arbeiten , wenn args (Bash 4.3.46) vorbei.Versuchen Sie es mit einem vollständigen Alias , der dieses Problem genau löst.
Nach der Installation können Sie mit einer allgemeinen Funktion viele Aliase wie folgt ausführen:
Möglicherweise möchten Sie die Datei complete_alias in jeder Bash-Instanz über
.bash_profile
o.ä.Installation
Anwendung
container
kann jetzt vom ursprünglichen_docker()
Vervollständigungs-Handler automatisch vervollständigt werden;quelle
2018 antworten
Sie müssen Ihren Alias zum Programm 'complete' hinzufügen. Abhängig von der Art der Autovervollständigung, die Sie erreichen möchten, müssen Sie -c oder -F verwenden.
Für die automatische Vervollständigung von Paketen:
Für die automatische Vervollständigung von Befehlen:
So überprüfen Sie, ob Ihr Alias korrekt hinzugefügt wurde:
Zum Schluss, um einen Alias von 'complete' zu entfernen:
In deinem Fall:
quelle
complete -F xxx
funktioniert nicht unter OSX (es zeigt nur die Verwendungcomplete: usage: complete [-abcdefgjksuv] [-pr] [-o option] [-A action] [-G globpat] [-W wordlist] [-P prefix] [-S suffix] [-X filterpat] [-F function] [-C command] [name ...]
). Hast du einen Zeiger? Vielen Dank.Hier ist der Code von Shawn J. Goffs Antwort mit einigen Verbesserungen:
shell-check
zB den ersten"
der"$@"
tatsächlich beendeten Funktionsdefinitionsstrings.return 0
damit der Rückgabewert der zugrunde liegenden Funktion an den Aufrufer zurückgegeben werden kann..
quelle
COMP_WORDS
Array aufzunehmen. Wenn wirmake-completion-wrapper _apt_get _apt_get_install apt-get install
als Beispiel verwendenshift 2
,$@
enthält afterapt-get install
. Die Funktionsdefinition enthältapt-get install
(die beiden wörtlichen Wörter) bei der ZuweisungCOMP_WORDS
.Als Erweiterung zu @Giles answer benennt die folgende Komfortfunktion den Wrapper automatisch
make-completion-wrapper
so, dass die Vervollständigung in einer Zeile definiert werden kann:quelle