Ho un paio di funzioni shell definite nel mio .zshrc
che risparmiano sulla digitazione e consentono l'integrazione con lo schermo. Per esempio:
function s()
{
screen -t "$1" ssh "$@"
}
Tuttavia, quando utilizzo queste funzioni della shell, non posso sfruttare le funzionalità di completamento del comando integrate di zsh. (Nel caso di SSH, completamento automatico dei nomi host basati su known_hosts e ssh_config). Qual è il modo preferito di collegarsi ai meccanismi di completamento esistenti per i comandi per i quali ho creato i wrapper?
MODIFICARE:
Grazie a Gilles per la sua risposta qui sotto. L'uso di compdef sembra essere il modo per farlo, ma è interessante notare che non funziona in modo uniforme. In questo caso, ho la seguente configurazione:
function s()
{
screen -t "$1" ssh "$@"
}
function m()
{
screen -t "man.$1" man "$1"
}
compdef $_comps[man] m
compdef $_comps[ssh] s
Il completamento per la mia funzione wrapper 'm' funziona come previsto, tuttavia il completamento per la mia funzione 's' no; anziché tentare di completare i nomi host, sembra ricadere al completamento automatico predefinito fornendomi un elenco di file quando premo 'tab'. C'è qualche stranezza nel modo in cui viene gestito il completamento di SSH, il che significa che devo fare qualcosa di più?