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?

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?


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

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'


0

Ich konnte die Autokorrektur mit deaktivieren

ENABLE_CORRECTION="false"

Ich benutze zsh Version 5.7.1


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.