Eu uso a seguinte função para dizer que uma função ou um alias ou script de wrapper (por exemplo, s
) deve ser concluído como um comando existente (por exemplo, ssh
):
compdefas () {
local a
a="$1"
shift
compdef "$_comps[$a]" "${(@)*}=$a"
}
compdefas xterm cxterm uxterm xterm-color
Alguns comandos de conclusão se aplicam a uma família de funções e lêem a primeira palavra da linha de comando para determinar qual comando específico deve ser concluído. Por exemplo, os comandos ssh
, scp
, sftp
e mais alguns são todos preenchidos pela função _ssh
. Nesse caso, você precisa dizer à função de conclusão qual é o “serviço” da sua função (por padrão, o serviço é o nome do executável, aqui o nome da sua função).
_s () {
local service=ssh
_ssh "$@"
}
compdef _s s