diff --git a/shell/completion.bash b/shell/completion.bash index 48a34c9b..044a35f6 100644 --- a/shell/completion.bash +++ b/shell/completion.bash @@ -494,8 +494,12 @@ if ! declare -F __fzf_list_hosts > /dev/null; then shopt -s nullglob __fzf_exec_awk ' - tolower($1) ~ /^host(name)?$/ { - for (i = 2; i <= NF; i++) + # Note: mawk <= 1.3.3-20090705 does not support the POSIX brackets of + # the form [[:blank:]], and Ubuntu 18.04 LTS still uses this + # 16-year-old mawk unfortunately. We need to use [ \t] instead. + match(tolower($0), /^[ \t]*host(name)?[ \t]*[ \t=]/) { + $0 = substr($0, RLENGTH + 1) # Remove "Host(name)?=?" + for (i = 1; i <= NF; i++) if ($i !~ /[*?%]/) print $i } diff --git a/shell/completion.zsh b/shell/completion.zsh index 950fa674..0f20812a 100644 --- a/shell/completion.zsh +++ b/shell/completion.zsh @@ -272,8 +272,12 @@ if ! declare -f __fzf_list_hosts > /dev/null; then setopt GLOB NO_DOT_GLOB CASE_GLOB NO_NOMATCH NULL_GLOB __fzf_exec_awk ' - tolower($1) ~ /^host(name)?$/ { - for (i = 2; i <= NF; i++) + # Note: mawk <= 1.3.3-20090705 does not support the POSIX brackets of + # the form [[:blank:]], and Ubuntu 18.04 LTS still uses this + # 16-year-old mawk unfortunately. We need to use [ \t] instead. + match(tolower($0), /^[ \t]*host(name)?[ \t]*[ \t=]/) { + $0 = substr($0, RLENGTH + 1) # Remove "Host(name)?=?" + for (i = 1; i <= NF; i++) if ($i !~ /[*?%]/) print $i }