Aqui está a parte relevante do meu .zshrc
. Ele não mudou desde 2002, portanto, posso escrevê-lo de maneira diferente hoje, mas ainda funciona para completar os nomes de host de ~/.ssh/config
e ~/.ssh/known_hosts
(se HashKnownHosts
estiver desativado - não existia naqueles dias).
h=()
if [[ -r ~/.ssh/config ]]; then
h=($h ${${${(@M)${(f)"$(cat ~/.ssh/config)"}:#Host *}#Host }:#*[*?]*})
fi
if [[ -r ~/.ssh/known_hosts ]]; then
h=($h ${${${(f)"$(cat ~/.ssh/known_hosts{,2} || true)"}%%\ *}%%,*}) 2>/dev/null
fi
if [[ $#h -gt 0 ]]; then
zstyle ':completion:*:ssh:*' hosts $h
zstyle ':completion:*:slogin:*' hosts $h
fi