Come disabilitare parzialmente la correzione automatica di zsh


36

La funzione di correzione automatica di zsh è molto utile per me, ma non dà sempre un risultato adeguato.

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

Eppure quello che voglio è qualcosa come un'opzione never che può fermarlo per correggere comandi come quelli per sempre.

Come posso fare questo?

Risposte:


53

Puoi informare zsh che non dovrebbe correggersi automaticamente su comandi specifici aliasandoli con il prefisso 'nocorrect' nel tuo .zshrc (esempio qui: http://dzen.geekmode.org/wiki/wiki.cgi/-main/ZshConfiguration ) :

alias vim='nocorrect vim' 

In alternativa, se questo processo di whitelisting diventa troppo frustrante, puoi disattivare completamente la correzione automatica con quanto segue nel tuo .zshrc.

Per le versioni più recenti di zsh usare:

 unsetopt correct

per le versioni precedenti di zsh usare:

 unsetopt correct-all

Modificato per aggiungere: ecco una discussione precedente su questo argomento - Eccezioni alla funzione zshallall?


1
Mentre questo funziona per quando il comando vim è all'inizio, ma non funziona per comandi come bundle exec cucumber <some_specific_feature> && bundle exec rspec <some_specific_spec>. Ho aggiunto un alias per rspec. Qualche consiglio?
Martin Foot,

@MartinFoot: se usi oh-my-zsh il plug-in bundler può aiutarti: coderwall.com/p/weixga
brafales

1
Nelle nuove versioni unsetopt correct_allcambiate inunsetopt correct
antitossico

@antitoxic: Volevo cercare cosa significa "nuova versione" in termini di numeri di versione, ma anche nel checkout git di oggi (zsh 5.0.2 + 31433) la zshoptionsmanpage afferma CORRECT_ALL: Prova a correggere l'ortografia di tutti gli argomenti in una riga . Inoltre, entrambe le voci man per CORRECTe CORRECT_ALLnon sono cambiate almeno dal 2008. Quindi mi manca il punto; puoi per favore spiegare cosa porti alla tua dichiarazione ?!
mpy

Vorrei aggiungere: caricare l'ordine conta! Assicurati di aggiungere unsetopt dopo aver acquistato oh-my-zsh ... Ho perso molto del mio tempo.
Oma,

22

Penso di aver trovato una risposta migliore a questo.

Non sono sicuro delle versioni e quant'altro, ma sembra correct_allche debba correggere comandi e argomenti, mentre correctcorregge solo i comandi, eliminando quindi questo fastidioso comportamento.

Questo è ciò che ho nei miei file di configurazione

unsetopt correct_all  
setopt correct

Questa è la risposta effettiva. correct-allnon sembra essere una vera opzione in alcuna documentazione che posso trovare, né in Real Life. Lo è correct_all. Grazie!
Jamey,

Ho impostato setall correttamente da zsh.sourceforge.net/Intro/intro_16.html
zzapper

Tu sei il mio eroe!
Martin K,

Se usi oh-my-zsh, assicurati di inserire le due righe dopo che source $ZSH/oh-my-zsh.shaltrimenti non funziona. Sembra che oh-my-zsh ripristinerà l'opzione correct_all.
Matt,

0

Ho avuto il problema durante l'utilizzo di rspecvia zeuse mi piacerebbe mantenere le impostazioni di correzione automatica in quanto sembrano funzionare per tutto il resto tranne rspec , quindi non ho mai provato nessuno degli altri suggerimenti sopra.

Quello che dovevo fare era nocorrectZeus stesso:

alias zeus = 'nocus zeus'


0

Sono stato in grado di disabilitare la correzione automatica tramite

ENABLE_CORRECTION="false"

Sto usando zsh versione 5.7.1


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.