So deaktivieren Sie die Autokorrektur der zsh teilweise

36

Die Autokorrekturfunktion von zsh ist für mich sehr hilfreich, liefert aber nicht immer ein korrektes Ergebnis.

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

Was ich aber möchte, ist so etwas wie eine Nie- Option, die es aufhalten kann, Befehle wie diese für immer zu korrigieren.

Wie kann ich das machen?

Shou Ya
quelle

Antworten:

53

Sie können zsh darüber informieren, dass bestimmte Befehle nicht automatisch korrigiert werden sollen, indem Sie sie mit dem Präfix 'nocorrect' in Ihrem .zshrc aliasen (Beispiel hier: http://dzen.geekmode.org/wiki/wiki.cgi/-main/ZshConfiguration ) :

alias vim='nocorrect vim' 

Alternativ können Sie - falls dieser Whitelisting-Prozess zu frustrierend wird - die Autokorrektur in Ihrer .zshrc-Datei wie folgt vollständig ausschalten.

Für neuere Versionen von zsh verwenden Sie:

 unsetopt correct

Für ältere Versionen von zsh verwenden Sie:

 unsetopt correct-all

Geändert, um hinzuzufügen: Hier ist eine vorherige Diskussion zu diesem Thema - Ausnahmen zu zsh correctall Feature?

Soz
quelle
1
Dies funktioniert zwar, wenn der Befehl vim am Start ist, funktioniert aber nicht für Befehle wie bundle exec cucumber <some_specific_feature> && bundle exec rspec <some_specific_spec>. Ich habe einen Alias ​​für rspec hinzugefügt. Irgendwelche Tipps?
Martin Foot
@MartinFoot: Wenn Sie oh-my-zsh verwenden, kann Ihnen das Bundler-
brafales
1
In den neuen Versionen unsetopt correct_allgeändertunsetopt correct
Antitoxikum
@antitoxic: Ich wollte nachschlagen, was "neue Version" in Versionsnummern bedeutet, aber selbst in der heutigen Git-Prüfung (zsh 5.0.2 + 31433) heißt es in der zshoptionsManpage CORRECT_ALL: Versuchen Sie, die Schreibweise aller Argumente in einer Zeile zu korrigieren . Darüber hinaus beiden Männer Einträge für CORRECTund CORRECT_ALLnicht zumindest seit 2008 geändert Also ich Ihren Punkt bin fehle; kannst du bitte erklären, was du zu deiner aussage führst ?!
mpy
Ich möchte hinzufügen: Ladereihenfolge zählt! Stellen Sie sicher, dass Sie unsetopt hinzufügen, nachdem Sie oh-my-zsh bezogen haben ... Ich habe viel Zeit verschwendet.
Oma
22

Ich denke, ich habe eine bessere Antwort darauf gefunden.

Ich bin nicht sicher, was Versionen und so weiter betrifft, aber es scheint, als ob es correct_allBefehle und Argumente correctkorrigieren soll , während es nur Befehle korrigiert, wodurch dieses nervige Verhalten beseitigt wird.

Das ist, was ich in meinen Konfigurationsdateien habe

unsetopt correct_all  
setopt correct
Paulo Casaretto
quelle
Dies ist die eigentliche Antwort. correct-allscheint in keiner Dokumentation, die ich finden kann, oder im wirklichen Leben eine echte Option zu sein. Es ist correct_all. Vielen Dank!
Jamey
Ich habe richtig eingestellt von zsh.sourceforge.net/Intro/intro_16.html
zzapper
Sie sind mein Held!
Martin K
Wenn Sie oh-my-zsh verwenden, stellen Sie sicher, dass Sie die beiden Zeilen nacheinander setzen, source $ZSH/oh-my-zsh.shda dies sonst nicht funktioniert. Es scheint, dass oh-my-zsh die Option correct_all zurücksetzt.
Matt
0

Ich hatte das Problem bei der Verwendung rspecüber zeus, und ich möchte die automatische richtigen Einstellungen halten , wie sie für alles zu funktionieren scheint anders ausnehmen rspec , so dass ich nie über eine der anderen Vorschläge ausprobiert.

Was ich tun musste, war nocorrectzeus selbst:

alias zeus = 'nocorrect zeus'

IanVaughan
quelle
0

Ich konnte die Autokorrektur mit deaktivieren

ENABLE_CORRECTION="false"

Ich benutze zsh Version 5.7.1

Rahul
quelle