Another, seemingly related issue:
Given ssh_config2:
Host foo-test-05827d88.foo.bar bar-test-6cae9ce0.foo.bar
% ssh -F ssh_config2 test<TAB>
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-<TAB>.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-<TAB>
>
> 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.
>
Attachment:
signature.asc
Description: OpenPGP digital signature