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?

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?


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

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


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'


0

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

ENABLE_CORRECTION="false"

J'utilise la version 5.7.1 de zsh


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.