summaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
authorGam <1348187+Y3K@users.noreply.github.com>2024-02-29 14:59:27 -0600
committerGitHub <noreply@github.com>2024-02-29 21:59:27 +0100
commit50fd98e5a6c9d7c36b0cc678f577f7ce1d181bea (patch)
treedf83b6bcadc4dab67a0878305af44e405bbe402a /plugins
parent65b23a3328bfd7ddf3234de4538fa7c3e9644491 (diff)
downloadzsh-50fd98e5a6c9d7c36b0cc678f577f7ce1d181bea.tar.gz
zsh-50fd98e5a6c9d7c36b0cc678f577f7ce1d181bea.tar.bz2
zsh-50fd98e5a6c9d7c36b0cc678f577f7ce1d181bea.zip
fix(ssh): allow multiple definitions per host (#12227)
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