Another, seemingly related issue: Given ssh_config2: Host foo-test-05827d88.foo.bar bar-test-6cae9ce0.foo.bar % ssh -F ssh_config2 test completes to % 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? 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!) 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. >