summaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'plugins')
-rw-r--r--plugins/ssh/ssh.plugin.zsh13
1 files changed, 10 insertions, 3 deletions
diff --git a/plugins/ssh/ssh.plugin.zsh b/plugins/ssh/ssh.plugin.zsh
index 085e71fa1..b5b050536 100644
--- a/plugins/ssh/ssh.plugin.zsh
+++ b/plugins/ssh/ssh.plugin.zsh
@@ -4,9 +4,16 @@
# Filter out wildcard host sections.
_ssh_configfile="$HOME/.ssh/config"
if [[ -f "$_ssh_configfile" ]]; then
- _hosts=($(egrep '^Host.*' "$_ssh_configfile" | awk '{print $2}' | grep -v '^*' | sed -e 's/\.*\*$//'))
- zstyle ':completion:*:hosts' hosts $_hosts
- unset _hosts
+ _ssh_hosts=($(
+ egrep '^Host.*' "$_ssh_configfile" |\
+ awk '{for (i=2; i<=NF; i++) print $i}' |\
+ sort |\
+ uniq |\
+ grep -v '^*' |\
+ sed -e 's/\.*\*$//'
+ ))
+ zstyle ':completion:*:hosts' hosts $_ssh_hosts
+ unset _ssh_hosts
fi
unset _ssh_configfile