In meinem sind einige Shell-Funktionen definiert, .zshrc
die beim Tippen sparen und die Integration in den Bildschirm ermöglichen. Zum Beispiel:
function s()
{
screen -t "$1" ssh "$@"
}
Wenn ich diese Shell-Funktionen verwende, kann ich jedoch die integrierten Befehlsvervollständigungsfunktionen von zsh nicht nutzen. (Bei SSH werden Hostnamen basierend auf bekannten_Hosts und ssh_config automatisch vervollständigt.) Was ist die bevorzugte Methode, um sich an die vorhandenen Vervollständigungsmechanismen für Befehle anzuschließen, für die ich Wrapper erstellt habe?
BEARBEITEN:
Vielen Dank an Gilles für seine Antwort unten. Die Verwendung von compdef scheint der Weg zu sein, aber interessanterweise scheint es nicht einheitlich zu funktionieren. In diesem Fall habe ich folgendes Setup:
function s()
{
screen -t "$1" ssh "$@"
}
function m()
{
screen -t "man.$1" man "$1"
}
compdef $_comps[man] m
compdef $_comps[ssh] s
Die Vervollständigung für meine Wrapper-Funktion 'm' funktioniert wie erwartet, die Vervollständigung für meine Funktion 's' jedoch nicht. Anstatt zu versuchen, Hostnamen zu vervollständigen, scheint es auf die standardmäßige automatische Vervollständigung zurückzugreifen, indem mir eine Liste von Dateien zur Verfügung gestellt wird, wenn ich auf "Tab" drücke. Gibt es eine Kuriosität in der Art und Weise, wie die SSH-Fertigstellung gehandhabt wird, was bedeutet, dass ich etwas weiter tun muss?
quelle
compdefas xterm cxterm uxterm xterm-color
.