c506b64
--- a/bash_completion
c506b64
+++ b/bash_completion
1841a58
@@ -1259,16 +1259,16 @@ _known_hosts_real()
1841a58
         awkcur=${awkcur//\./\\\.}
1841a58
         curd=$awkcur
1841a58
 
1841a58
-        if [[ "$awkcur" == [0-9]*.* ]]; then
1841a58
-            # Digits followed by a dot - just search for that
1841a58
-            awkcur="^$awkcur.*"
1841a58
+        if [[ "$awkcur" == [0-9]*[.:]* ]]; then
1841a58
+            # Digits followed by a dot or a colon - just search for that
1841a58
+            awkcur="^$awkcur[.:]*"
1841a58
         elif [[ "$awkcur" == [0-9]* ]]; then
1841a58
-            # Digits followed by no dot - search for digits followed
1841a58
-            # by a dot
1841a58
-            awkcur="^$awkcur.*\."
1841a58
+            # Digits followed by no dot or colon - search for digits followed
1841a58
+            # by a dot or a colon
1841a58
+            awkcur="^$awkcur.*[.:]"
1841a58
         elif [ -z "$awkcur" ]; then
1841a58
-            # A blank - search for a dot or an alpha character
1841a58
-            awkcur="[a-z.]"
1841a58
+            # A blank - search for a dot, a colon, or an alpha character
1841a58
+            awkcur="[a-z.:]"
1841a58
         else
1841a58
             awkcur="^$awkcur"
1841a58
         fi
1841a58
@@ -1278,8 +1278,7 @@ _known_hosts_real()
c506b64
             COMPREPLY=( "${COMPREPLY[@]}" $( awk 'BEGIN {FS=","}
c506b64
             /^\s*[^|\#]/ {for (i=1; i<=2; ++i) { \
c506b64
             gsub(" .*$", "", $i); \
c506b64
-            gsub("[\\[\\]]", "", $i); \
c506b64
-            gsub(":[0-9]+$", "", $i); \
c506b64
+            sub("^\\[", "", $i); sub("\\](:[0-9]+)?$", "", $i); \
c506b64
             if ($i ~ /'"$awkcur"'/) {print $i} \
c506b64
             }}' "${kh[@]}" 2>/dev/null ) )
c506b64
         fi