Cómo deshabilitar parcialmente la autocorrección de zsh

36

La función de autocorrección de zsh es muy útil para mí, pero no siempre da un resultado adecuado.

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

Sin embargo, lo que quiero es algo así como una opción que nunca puede detenerlo para corregir comandos como esos para siempre.

¿Cómo puedo hacer esto?

Shou Ya
fuente

Respuestas:

53

Puede informar a zsh que no debe autocorregirse en comandos específicos aliaselos con el prefijo 'nocorrect' en su .zshrc (ejemplo aquí: http://dzen.geekmode.org/wiki/wiki.cgi/-main/ZshConfiguration ) :

alias vim='nocorrect vim' 

Alternativamente, si este proceso de lista blanca se vuelve demasiado frustrante, puede desactivar la autocorrección por completo con lo siguiente en su .zshrc.

Para versiones más nuevas de zsh use:

 unsetopt correct

para versiones anteriores de uso de zsh:

 unsetopt correct-all

Enmendado para agregar: aquí hay una discusión previa sobre este tema - ¿ Excepciones a la función zsh correctoll?

Soz
fuente
1
Si bien esto funciona cuando el comando vim está al inicio, pero no funciona para comandos como bundle exec cucumber <some_specific_feature> && bundle exec rspec <some_specific_spec>. He agregado un alias para rspec. ¿Algun consejo?
Martin Foot
@MartinFoot: si usa oh-my-zsh, el complemento del paquete puede ayudarlo: coderwall.com/p/weixga
brafales
1
En las nuevas versiones unsetopt correct_allcambiadas aunsetopt correct
antitóxico el
@antitoxic: quería buscar qué significa "nueva versión" en términos de números de versión, pero incluso en el git checkout de hoy (zsh 5.0.2 + 31433) la página de zshoptionsmanual dice CORRECT_ALL: Intenta corregir la ortografía de todos los argumentos en una línea . Además, ambas entradas de hombre para CORRECTy CORRECT_ALLno han cambiado al menos desde 2008. Así que me estoy perdiendo su punto; ¿puede explicar lo que lleva a su declaración?
mpy
Me gustaría agregar: ¡el orden de carga es importante! Asegúrate de agregar unsetopt después de obtener oh-my-zsh ... Perdí mucho tiempo.
oma
22

Creo que encontré una mejor respuesta a esto.

No estoy seguro de las versiones y demás, pero parece que correct_allse supone que corrige los comandos y argumentos, mientras que correctcorrige solo los comandos, eliminando así este comportamiento molesto.

Esto es lo que tengo en mis archivos de configuración

unsetopt correct_all  
setopt correct
Paulo Casaretto
fuente
Esta es la respuesta real. correct-allno parece ser una opción real en ninguna documentación que pueda encontrar, ni en la vida real. Es correct_all. ¡Gracias!
Jamey
Setopt correctoll de zsh.sourceforge.net/Intro/intro_16.html
zzapper
¡Eres mi héroe!
Martin K
Si usa oh-my-zsh, asegúrese de colocar las dos líneas después de lo source $ZSH/oh-my-zsh.shcontrario no funcionará. Parece que oh-my-zsh restablecerá la opción correct_all.
Matt
0

Tuve el problema al usar rspecvia zeus, y me gustaría mantener la configuración de corrección automática, ya que parecen funcionar para todo lo demás excepto rspec , por lo que nunca probé ninguna de las otras sugerencias anteriores.

Lo que tenía que hacer era el nocorrectpropio zeus:

alias zeus = 'zeus no correcto'

IanVaughan
fuente
0

Pude desactivar la autocorrección usando

ENABLE_CORRECTION="false"

Estoy usando zsh versión 5.7.1

rahul
fuente