> % ssh -F ssh_config2 -test-|.foo.bar > > and a second invocation of the completion will then use the "-t" at the > beginning (for "escape character (or `none')"). > > Should this get quoted on expansion to prevent this? This would need to be escaped using a backslash at the beginning: ssh -F ssh_config2 \-test-.foo.bar > When quoting it manually, I see a similar issue as described before (see > below), where > > ssh -F ssh_config2 '-test-.foo.bar' > > gets expanded to > > ssh -F ssh_config2 '-test-BR.foo.bar' > > (without the globcomplete option though!) The insertion of "BR" does not happen with "zsh -f" though. It is caused by matcher-list zstyle setting in my config: 'r:|[._-]=*' My full setting (based on the one from oh-my-zsh): zstyle ':completion:*' matcher-list '' 'm:{[:lower:]}={[:upper:]}' \ 'm:{[:upper:]}={[:lower:]}' 'r:|[._-]=* r:|=*' 'l:|=* r:|=*' While looking at it, it seems like 'r:|[._-]=* r:|=*' is redundant, but the "COMPLETION MATCHING CONTROL" section in zshcompwid(1) is not really trivial. For some other reason I cannot reproduce the issue of "BR" being inserted when using ssh_config2 with "zsh -f" just by using the same matcher-list zstyle config. > On 17.08.2016 21:16, Daniel Hahler wrote: >> When using TAB completion (via expand-or-complete, and "setopt >> globcomplete") on a partial hostname where alternatives with a common >> suffix exist, the second invocation of TAB will insert some character(s) >> that make it fail to complete afterwards. >> >> >> % autoload -Uz compinit >> % compinit >> % echo "Host test-05827d88.foo.bar test-6cae9ce0.foo.bar" > ssh_config >> % setopt globcomplete >> >> With >> >> % ssh -F ssh_config test- >> >> You will get: >> >> % ssh -F ssh_config test-|.foo.bar >> >> Pressing TAB again results in: >> >> % ssh -F ssh_config test-|BR.foo.bar >> >> The characters being inserted seem to come from the "bar". >> >> With ".dot.com" at the end I am seeing "CM" being inserted. >> >> With "Host test-05.dot.com test-6c.dot.com" however "D" is being >> inserted. >> >> And with a single TLD (i.e. "test-05827d88.com test-6cae9ce0.com") it >> works. >> >> In _ssh_hosts the following is used, which seems to be relevant, since >> the inserted characters are uppercased: >> >> compadd -M 'm:{a-zA-Z}={A-Za-z} r:|.=* r:|=*' "$@" $config_hosts >> >> zsh 5.2-dev-1, 062aeca. >> >> >> Thanks, >> Daniel. >> >