Eu tenho algumas funções de shell definidas no meu, .zshrc
que economizam na digitação e permitem a integração com a tela. Por exemplo:
function s()
{
screen -t "$1" ssh "$@"
}
No entanto, quando eu uso essas funções do shell, não posso tirar proveito dos recursos de conclusão de comando incorporados do zsh. (No caso do SSH, preenchimento automático de nomes de host com base em known_hosts e ssh_config). Qual é a maneira preferida de conectar-se aos mecanismos de conclusão existentes para comandos para os quais eu criei wrappers?
EDITAR:
Agradecemos a Gilles por sua resposta abaixo. Usar o compdef parece ser a maneira de fazer isso, mas, curiosamente, ele não parece funcionar de maneira uniforme. Nesse caso, tenho a seguinte configuração:
function s()
{
screen -t "$1" ssh "$@"
}
function m()
{
screen -t "man.$1" man "$1"
}
compdef $_comps[man] m
compdef $_comps[ssh] s
A conclusão da minha função de wrapper 'm' funciona conforme o esperado, mas a conclusão da minha função 's' não; em vez de tentar concluir nomes de host, ele parece voltar ao preenchimento automático padrão, fornecendo-me uma lista de arquivos quando clico em 'tab'. Existe alguma estranheza na maneira como a conclusão do SSH é tratada, o que significa que preciso fazer algo mais?
fonte
compdefas xterm cxterm uxterm xterm-color
.