J'ai quelques fonctions de shell définies dans mon .zshrc
qui économisent sur la frappe et permettent l'intégration avec l'écran. Par exemple:
function s()
{
screen -t "$1" ssh "$@"
}
Cependant, lorsque j'utilise ces fonctions shell, je ne peux pas profiter des fonctionnalités intégrées de complétion de commande de zsh. (Dans le cas de SSH, compléter automatiquement les noms d'hôte sur la base de known_hosts et ssh_config). Quelle est la meilleure façon de se connecter aux mécanismes de complétion existants pour les commandes pour lesquelles j'ai créé des wrappers?
ÉDITER:
Merci à Gilles pour sa réponse ci-dessous. L'utilisation de compdef semble être le moyen de le faire, mais il est intéressant de noter que cela ne semble pas fonctionner de manière uniforme. Dans ce cas, j'ai la configuration suivante:
function s()
{
screen -t "$1" ssh "$@"
}
function m()
{
screen -t "man.$1" man "$1"
}
compdef $_comps[man] m
compdef $_comps[ssh] s
L'achèvement de ma fonction wrapper 'm' fonctionne comme prévu, mais l'achèvement de ma fonction 's' ne fonctionne pas; plutôt que d'essayer de compléter les noms d'hôte, il semble revenir à la saisie semi-automatique par défaut en me fournissant une liste de fichiers lorsque je clique sur "tab". Y a-t-il une bizarrerie dans la façon dont l'achèvement de SSH est géré, ce qui signifie que je dois faire quelque chose de plus?
la source
compdefas xterm cxterm uxterm xterm-color
.