Comment désactiver partiellement la correction automatique du zsh

36

La fonction d’autocorrection de zsh m’aide beaucoup, mais ne donne pas toujours un résultat correct.

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

Pourtant, ce que je veux, c’est quelque chose comme une option qui ne peut jamais l’ empêcher de corriger des commandes comme celles-ci pour toujours.

Comment puis-je faire ceci?

Shou Ya
la source

Réponses:

53

Vous pouvez informer zsh qu'il ne doit pas corriger automatiquement des commandes spécifiques en les aliasant avec le préfixe 'nocorrect' dans votre .zshrc (exemple ici: http://dzen.geekmode.org/wiki/wiki.cgi/-main/ZshConfiguration ) :

alias vim='nocorrect vim' 

Alternativement, si ce processus de liste blanche devient trop frustrant, vous pouvez désactiver complètement la correction automatique avec les éléments suivants dans votre .zshrc.

Pour les nouvelles versions de zsh, utilisez:

 unsetopt correct

pour les anciennes versions de zsh, utilisez:

 unsetopt correct-all

Amendé pour ajouter: voici une discussion précédente sur ce sujet - Exceptions à zsh correctall feature?

Soz
la source
1
Bien que cela fonctionne pour quand la commande vim est au début, mais ne fonctionne pas pour des commandes telles que bundle exec cucumber <some_specific_feature> && bundle exec rspec <some_specific_spec>. J'ai ajouté un alias pour rspec. Des conseils?
Martin Foot
@MartinFoot: si vous utilisez oh-my-zsh, le plugin bundler peut vous aider: coderwall.com/p/weixga
brafales
1
Dans les nouvelles versions unsetopt correct_allmodifiées àunsetopt correct
antitoxique
@antitoxic: Je souhaitais savoir ce que signifie "nouvelle version" en termes de numéros de version, mais même dans git checkout d'aujourd'hui (zsh 5.0.2 + 31433), la zshoptionspage de manuel indique CORRECT_ALL: Essayez de corriger l'orthographe de tous les arguments d'une ligne. . En outre, les deux entrées homme pour CORRECTet CORRECT_ALLn'ont pas changé au moins depuis 2008. Donc, je manque votre argument; pouvez-vous s'il vous plaît expliquer ce que vous menez à votre déclaration?!
mpy
J'aimerais ajouter: L'ordre de chargement est important! Assurez-vous d'ajouter unsetopt après le sourcing oh-my-zsh ... Cela m'a fait perdre beaucoup de temps.
oma
22

Je pense avoir trouvé une meilleure réponse à cette question.

Je ne suis pas sûr des versions ni de quoi, mais il semble que ce dernier correct_allest censé corriger les commandes et les arguments, tout en correctne corrige que les commandes, éliminant ainsi ce comportement gênant.

C'est ce que j'ai dans mes fichiers de configuration

unsetopt correct_all  
setopt correct
Paulo Casaretto
la source
C'est la réponse réelle. correct-allne semble pas être une véritable option dans la documentation que je trouve, ni dans Real Life. C'est correct_all. Merci!
Jamey
J'ai misoptoptall tout de zsh.sourceforge.net/Intro/intro_16.html
zzapper
Tu es mon héros!
Martin K
Si vous utilisez oh-my-zsh, assurez-vous de mettre les deux lignes après, source $ZSH/oh-my-zsh.shsinon cela ne fonctionnera pas. Il semble que oh-my-zsh réinitialise l'option correct_all.
Matt
0

Je rencontrais le problème lors de l’utilisation de rspecvia zeuset j’aimerais conserver les paramètres de correction automatique, car ils semblent fonctionner pour tout le reste, à l’ exception rspec de ce qui précède. Je n’ai donc jamais essayé aucune des suggestions ci-dessus.

Ce que je devais faire était nocorrectZeus lui-même:

alias zeus = 'nocorrect zeus'

IanVaughan
la source
0

J'ai pu désactiver l'autocorrection à l'aide de

ENABLE_CORRECTION="false"

J'utilise la version 5.7.1 de zsh

Rahul
la source