From 7b342daa725a9a442826d6103660f402c9f98568 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Theodor=20Nesfeldt=20Eng=C3=B8y?= <140903820+TheodorNEngoy@users.noreply.github.com> Date: Tue, 20 May 2025 21:29:41 +0200 Subject: [PATCH] fix: include .ssh/config hosts in ssh completion alongside /etc/hosts --- plugins/ssh/ssh.plugin.zsh | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/plugins/ssh/ssh.plugin.zsh b/plugins/ssh/ssh.plugin.zsh index b5b050536..55f6fc9a8 100644 --- a/plugins/ssh/ssh.plugin.zsh +++ b/plugins/ssh/ssh.plugin.zsh @@ -51,3 +51,22 @@ function ssh_unload_key { ssh-add -d "$keyfile" fi } + +# Custom SSH hosts completion: include both /etc/hosts and ~/.ssh/config +_zsh_ssh_hosts() { + local hosts=() + # Read hosts from /etc/hosts + while read -r ip name _; do + [[ -n $name ]] && hosts+=($name) + done < /etc/hosts + + # Read Host aliases from ~/.ssh/config + local cfg_hosts=(${(f)"$(awk '/^Host[[:space:]]/ { for (i=2; i<=NF; i++) print \$i }' ~/.ssh/config 2>/dev/null)"}) + hosts+=(${cfg_hosts[@]}) + + # Output combined list + echo "${hosts[@]}" +} + +# Apply the custom hosts completion function +zstyle ':completion:*:ssh:*' hosts zsh_ssh_hosts