Zsh — autocorreção mais inteligente

Zsh — autocorreção mais inteligente

É possível fazer o Zsh parar de tentar corrigir argumentos que não se destinam a ser arquivos com arquivos do diretório atual sem desligar completamente a correção ou limitá-la a setopt CORRECT(corrigir apenas o comando)?

Por exemplo, quando CORRECT_ALLestá definido com setopt, isso acontece:

 gris@arefiev: ~% cd srcc 
change srcc to src-nyae? n

Até agora, bom (o argumento cddeveria ser um arquivo). No entanto,

 gris@arefiev: ~% man zile
change zile to .zile-nyae? 

O que? Eu esperaria que fosse corrigido zilequando .zilefor manchamado com -Copção. Ele também tenta corrigir os parâmetros do host ssh, primeiros argumentos para sudoetc, o que é realmente irritante.

Tenho que recorrer a uma muleta: set alias man='nocorrect man'etc etc, para cada comando afetado, mas claramente não é a melhor solução. Eu também não gosto CORRECTe preferiria a muleta plus CORRECT_ALLapenas CORRECT.

Zsh é zsh 4.3.17 (x86_64-unknown-linux-gnu), Debian sid.

Atualizar: aqui está o meu.zshrc http://pastebin.com/67mykgRv

Responder1

Zsh vem com um grande conjunto de conclusões, mas um conjunto menor de correções. Existem muitos comandos para os quais a conclusão é útil, mas não a correção; por exemplo, é útil completar argumentos mkdir(para criar diretórios dentro de diretórios existentes), mas não corrigi-los. A correct_allopção é muito dura, pois ativa a correção em todos os lugares; infelizmente, não há opção de corrigir somente quando um conjunto de entradas corretas é fornecido.

Você pode personalizar as correções para um determinado comando definindo ocorrectionstag e personalize se deseja realizar a correção fazendo_correctparte dematcher-listou não. Estes são definidos com ozstyleconstruídas em.

Responder2

Parece-me que está faltando alguma coisa em sua distribuição. A maioria das implementações de ZSH vem com uma grande coleção de configurações de conclusão pré-configuradas para ZSH que são concluídas de forma inteligente com base na posição do comando e do argumento. Por exemplo, no meu sistema há umconclusões zshpacote. Quando instalado e carregado corretamente, mancompleta apenas com coisas encontradas nas páginas de manual, não com arquivos, sshapenas com nomes de host, ssh -lcompletaria com nomes de usuário do sistema, mas depois ssh -l calebvoltaria a completar com nomes de host, etc.

Você deve verificar quais pacotes zsh estão disponíveis e se está carregando as configurações padrão corretamente. Você não deveria ter que configurar um monte de substituições manuais para comandos padrão, como você lista em sua pergunta.

informação relacionada