O preenchimento automático de ZSH fornece erros aparentemente aleatórios após algum tempo

4

Meu autocompletar zsh é interrompido de uma maneira estranha. Para logins limpos, tudo funciona, mas depois de algum tempo eu recebo erros de autocompletar aparentemente aleatórios, para diferentes "tipos" de autocompletar. Às vezes, ls foo<tab> funciona, mas rm foo<tab> não. Estou completamente perdido em como depurar isso.

Não consegui encontrar um padrão para um comando em particular causando isso. Nem eu poderia ver um padrão sobre o que a conclusão funciona e o que não funciona. Na minha rotina eu uso módulos do gnu, make do executor, compiladores, nano etc.

Os erros que eu recebo no preenchimento automático são assim:

/bin/zsh:4: _main_complete: function definition file not found

ou

(eval):1: _autocd: function definition file not found
(eval):1: _autocd: function definition file not found
(eval):1: _autocd: function definition file not found
_main_complete:173: _ignored: function definition file not found
_main_complete:173: _ignored: function definition file not found
_main_complete:173: _ignored: function definition file not found

ou

(eval):1: _rm: function definition file not found
(eval):1: _rm: function definition file not found
(eval):1: _rm: function definition file not found

Eu vi mensagens semelhantes para _sudo e _module.

Estou usando o zsh (5.0.2) com oh-my-zsh em várias sessões de tela em uma máquina cujo sistema de arquivos inicial está em nfs. Eu participo às sessões de tela automaticamente em cada login com screen -xrR em .zprofile

Dois arquivos $ HOME / .zcompdump e $ HOME / .zompdump- hostname -5.0.2 são criados sempre que eu faço o login. Removê-los não fez diferença.

    
por Zulan 21.03.2014 / 12:05

1 resposta

3

Isso pode ser uma consequência da execução de algum código que atrapalha a variável FPATH ou fpath . Verifique o valor de qualquer uma dessas variáveis; deve ser uma lista de diretórios onde o zsh carrega as funções.

As variáveis FPATH e fpath estão vinculadas (como PATH e path ): a alteração de uma afeta a outra. A maiúscula FPATH é uma cadeia que contém uma lista de diretórios separados por dois-pontos. A minúscula fpath é uma matriz de diretórios.

Verifique seus scripts de inicialização em qualquer lugar onde você possa usar qualquer um desses nomes como variáveis. Verifique a lista de nomes de variáveis definir ou used por zsh ( man zshparam ) e certifique-se de não usar qualquer para fins diferentes.

As funções de conclusão são carregadas automaticamente, ou seja, carregadas na primeira vez em que são usadas. Uma vez que você tenha feito alguma conclusão em uma instância de shell, por exemplo, você não deve mais ver _main_complete: function definition file not found - se _main_complete funcionar mas depois parar de trabalhar com essa mensagem, algo mais estranho está acontecendo.

    
por 22.03.2014 / 01:46