#compdef ssh.zsh function _ssh.zsh() { _arguments \ ':args: _alternative "hosts:hosts: _ssh_hosts" "users:users: _ssh.zsh_users -qS@" "domains:domains:($(virsh list --all --name))"' } _ssh.zsh_users () { _combination -s '[:@]' my-accounts users-hosts users "$@" } _ssh.zsh "$@"