Como desativar parcialmente a correção automática do zsh


36

A função de autocorreção do zsh é muito útil para mim, mas nem sempre fornece um resultado adequado.

~$ sudo vim somefile
zsh: correct 'vim' to '.vim' [nyae]? 

No entanto, o que eu quero é algo como a opção nunca, que pode impedi-lo de corrigir comandos como esses para sempre.

Como posso fazer isso?

Respostas:


53

Você pode informar ao zsh que ele não deve se autocorrigir em comandos específicos, usando o aliasing com o prefixo 'nocorrect' no seu arquivo .zshrc (exemplo: http://dzen.geekmode.org/wiki/wiki.cgi/-main/ZshConfiguration ) :

alias vim='nocorrect vim' 

Como alternativa - se esse processo de lista de permissões se tornar muito frustrante - você pode desativar a correção automática completamente com o seguinte em seu arquivo .zshrc.

Para versões mais recentes do zsh, use:

 unsetopt correct

para versões mais antigas do zsh use:

 unsetopt correct-all

Alterado para acrescentar: aqui está uma discussão anterior sobre este assunto - Exceções ao recurso zsh correctall?


1
Enquanto isso funciona para quando o comando vim está no início, mas não funciona para comandos como bundle exec cucumber <some_specific_feature> && bundle exec rspec <some_specific_spec>. Eu adicionei um alias para rspec. Alguma dica?
Martin Foot

@MartinFoot: se você usar o oh-meu-zsh o plugin bundler podem ajudá-lo: coderwall.com/p/weixga
brafales

1
Nas novas versões unsetopt correct_allalteradas paraunsetopt correct
antitoxic 03/04

@antitoxic: Eu queria pesquisar o que significa "nova versão" em termos de números de versão, mas mesmo no git checkout de hoje (zsh 5.0.2 + 31433) a página de zshoptionsmanual declara CORRECT_ALL: Tente corrigir a ortografia de todos os argumentos em uma linha . Além disso, as duas entradas de homem CORRECTe CORRECT_ALLnão mudaram pelo menos desde 2008. Então, estou perdendo seu ponto; você pode explicar o que leva à sua declaração ?!
Mpy

Gostaria de acrescentar: a ordem de carregamento é importante! Certifique-se de adicionar unsetopt depois de comprar o oh-my-zsh ... Perdi muito do meu tempo.
oma

22

Eu acho que encontrei uma resposta melhor para isso.

Não tenho certeza sobre versões e outros enfeites, mas parece que correct_alldeveria corrigir comandos e argumentos, enquanto correctcorrige apenas comandos, eliminando esse comportamento irritante.

Isto é o que eu tenho nos meus arquivos de configuração

unsetopt correct_all  
setopt correct

Esta é a resposta real. correct-allnão parece ser uma opção real em nenhuma documentação que eu possa encontrar, nem na vida real. É correct_all. Obrigado!
23414 Jamey

Eu tenho correctall setopt de zsh.sourceforge.net/Intro/intro_16.html
ZZAPPER

Você é meu herói!
Martin K

Se você usar oh-my-zsh, certifique-se de colocar as duas linhas depois, source $ZSH/oh-my-zsh.shcaso contrário não funcionará. Parece que o oh-my-zsh redefinirá a opção correct_all.
27517 Matt

0

Tive o problema ao usar o rspecvia zeuse gostaria de manter as configurações de correção automática, pois elas parecem funcionar para todo o resto , exceto rspec , portanto, nunca tentei nenhuma das outras sugestões acima.

O que eu tinha que fazer era o nocorrectpróprio Zeus:

alias zeus = 'zeus nocorreto'


0

Consegui desativar a correção automática usando

ENABLE_CORRECTION="false"

Estou usando o zsh versão 5.7.1


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.