Jak częściowo wyłączyć autokorekty zsh

36

Funkcja autokorekty zsh jest dla mnie bardzo pomocna, ale nie zawsze daje właściwy wynik.

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

Jednak to, czego chcę, to coś w rodzaju opcji nigdy , która może zatrzymać to korygowanie poleceń takich jak te na zawsze.

W jaki sposób mogę to zrobić?

Shou Ya
źródło

Odpowiedzi:

53

Możesz poinformować zsh, że nie powinien autokorektować się na określonych komendach, aliasingując je przedrostkiem „nocorrect” w twoim .zshrc (przykład tutaj: http://dzen.geekmode.org/wiki/wiki.cgi/-main/ZshConfiguration ) :

alias vim='nocorrect vim' 

Alternatywnie - jeśli proces dodawania do białej listy stanie się zbyt frustrujący - możesz całkowicie wyłączyć autokorektę za pomocą następujących poleceń .zshrc.

W przypadku nowszych wersji Zsh użyj:

 unsetopt correct

dla starszych wersji Zsh użyj:

 unsetopt correct-all

Poprawiono, aby dodać: oto poprzednia dyskusja na ten temat - wyjątki od funkcji poprawiania zsh?

Soz
źródło
1
Chociaż działa to, gdy polecenie vim jest na początku, ale nie działa dla poleceń takich jak bundle exec cucumber <some_specific_feature> && bundle exec rspec <some_specific_spec>. Dodałem alias dla rspec. Jakieś wskazówki?
Martin Foot
@MartinFoot: jeśli używasz oh-my-zsh, wtyczka bundlera może ci pomóc: coderwall.com/p/weixga
brafales
1
W nowych wersjach unsetopt correct_allzmieniono naunsetopt correct
antytoksyczny
@antitoxic: Chciałem sprawdzić, co oznacza „nowa wersja” pod względem numerów wersji, ale nawet w dzisiejszym git checkout (zsh 5.0.2 + 31433) strona zshoptionspodręcznika stwierdza CORRECT_ALL: Spróbuj poprawić pisownię wszystkich argumentów w linii . Co więcej, oba wpisy man dla CORRECTi CORRECT_ALLnie zmieniły się przynajmniej od 2008 roku. Więc nie rozumiem tego; czy możesz wyjaśnić, co doprowadziło cię do wyciągu ?!
mpy
Chciałbym dodać: kolejność ładowania ma znaczenie! Upewnij się, że dodajesz unsetopt po sourcingu oh-my-zsh ... Zmarnowałem dużo czasu.
oma
22

Myślę, że znalazłem lepszą odpowiedź na to.

Nie jestem pewien co do wersji i tym podobnych rzeczy, ale wydaje się, że correct_allpowinien on poprawiać polecenia i argumenty, a correctpoprawiać tylko polecenia, eliminując w ten sposób irytujące zachowanie.

To właśnie mam w moich plikach konfiguracyjnych

unsetopt correct_all  
setopt correct
Paulo Casaretto
źródło
To jest właściwa odpowiedź. correct-allnie wydaje się być prawdziwą opcją w żadnej dokumentacji, którą mogę znaleźć, ani w prawdziwym życiu. Jest correct_all. Dzięki!
Jamey
Mam setopt correctall z zsh.sourceforge.net/Intro/intro_16.html
zzapper
Jesteś moim bohaterem!
Martin K
Jeśli używasz oh-my-zsh, upewnij się, że umieściłeś dwie linie po, w source $ZSH/oh-my-zsh.shprzeciwnym razie nie zadziała. Wygląda na to, że oh-my-zsh zresetuje opcję correct_all.
Matt
0

Miałem problem podczas używania rspecprzez zeusi chciałbym zachować ustawienia autokorekty, ponieważ wydają się one działać dla wszystkich innych oprócz rspec , więc nigdy nie wypróbowałem żadnej z powyższych sugestii.

Musiałem nocorrectsam Zeus:

alias zeus = 'nocorrect zeus'

IanVaughan
źródło
0

Byłem w stanie wyłączyć autokorekcję za pomocą

ENABLE_CORRECTION="false"

Korzystam z wersji Zsh 5.7.1

Rahul
źródło