Como posso fazer a conclusão do zsh funcionar no meio do nome do arquivo?

2

Isso funciona

Normalmente, a conclusão da tabulação de zsh funciona bem.

$ touch foo-1-bar foo-2-bar
$ touch f<Tab>
$ touch foo--bar
            ^ cursor here

Pressionar a tecla novamente traz um menu do qual eu posso selecionar arquivos.

$ touch foo--bar
foo-1-bar  foo-2-bar

Isso não acontece

No entanto, isso não parece funcionar com strings em que o início e o final coincidem. Por exemplo:

touch foo-bar foo-foo-bar
touch f<Tab>
touch foo-bar
         ^ cursor here. <tab> again.
touch foo-bar
              ^ cursor here.

Nenhum menu é exibido e não há oportunidade de selecionar foo-foo-bar . Esse comportamento é esperado ou um bug? Existe uma configuração para fazer um menu aparecer no último cenário?

Estou usando oh-my-zsh . Eu tentei remover todas as linhas relacionadas à conclusão de ~/.zshrc , mas isso não fez diferença.

    
por Sparhawk 02.02.2016 / 11:12

2 respostas

2

De acordo com os comentários, tentei desativar o oh-my-zsh , que corrigiu esse problema. Em seguida, passei pela oh-my-zsh source, desabilitando seletivamente os módulos.

Anteriormente, eu tinha CASE_SENSITIVE="true" , mas comentar essa linha resolveu isso para mim. Aparentemente, é um bug conhecido .

Para corrigir, pude colocar a seguinte linha em ~/.zshrc depois de obter oh-my-zsh .

zstyle ':completion:*' matcher-list 'r:|=*' 'l:|=* r:|=*'
    
por 03.02.2016 / 06:56
1

Pessoalmente, eu prefiro esta solução muito mais - link , Funciona como conclusão em tcsh e completa palavras, que são antes apenas do cursor.

Apenas use

    bindkey '^I' expand-or-complete-prefix

em vez de

    bindkey '^I' expand-or-complete

(que é por padrão).

    
por 07.09.2017 / 06:01

Tags