The autocorrection function of zsh is very helpful for me but it does't always gives a proper result.

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

Yet what I want is something like the a never option that can stop it to correct commands like those forever.

How can I do this?

5 Answers 5


You can inform zsh that it should not autocorrect on specific commands by aliasing them with the prefix 'nocorrect' in your .zshrc (example here: http://dzen.geekmode.org/wiki/wiki.cgi/-main/ZshConfiguration):

alias vim='nocorrect vim' 

Alternatively -- if this whitelisting process becomes too frustrating -- you can switch autocorrect off entirely with the following in your .zshrc.

For newer versions of zsh use:

 unsetopt correct

for older versions of zsh use:

 unsetopt correct-all

Amended to add: here is a previous discussion on this subject - Exceptions to zsh correctall feature?

  • 2
    While this works for when vim command is at the start, but doesn't work for commands such as bundle exec cucumber <some_specific_feature> && bundle exec rspec <some_specific_spec>. I've added an alias for rspec. Any tips? Oct 3, 2012 at 8:55
  • @MartinFoot: if you use oh-my-zsh the bundler plugin may help you: coderwall.com/p/weixga
    – brafales
    Nov 19, 2012 at 16:03
  • 1
    In the new versions unsetopt correct_all changed to unsetopt correct
    – antitoxic
    Apr 3, 2013 at 19:58
  • @antitoxic: I wanted to look up what "new version" in terms of version numbers means, but even in today's git checkout (zsh 5.0.2+31433) the zshoptions manpage states for CORRECT_ALL: Try to correct the spelling of all arguments in a line. Furthermore, both man entries for CORRECT and CORRECT_ALL didn't changed at least since 2008. So I am missing your point; can you please explain what you leads to your statement?!
    – mpy
    May 30, 2013 at 10:01
  • I'd like to add: load order matters! Make sure you add unsetopt after sourcing oh-my-zsh... Wasted a lot of my time.
    – oma
    Aug 26, 2013 at 19:04

I think I found a better answer to this.

Im not sure about versions and whatnot, but it seems correct_all is supposed to correct commands and arguments, while correct corrects only commands, therefore eliminating this annoying behaviour.

This is what I have in my config files

unsetopt correct_all  
setopt correct
  • 1
    This is the actual answer. correct-all doesn't appear to be a real option in any documentation I can find, nor in Real Life. It's correct_all. Thanks!
    – Jamey
    May 23, 2014 at 2:10
  • I have setopt correctall from zsh.sourceforge.net/Intro/intro_16.html
    – zzapper
    Jun 6, 2014 at 16:15
  • 3
    If you use oh-my-zsh, ensure you put the two lines after source $ZSH/oh-my-zsh.sh otherwise it does not work. It seems oh-my-zsh will reset option correct_all.
    – Matt
    Apr 27, 2017 at 19:50
  • @Matt setopt correct works before the sourcing of oh-my-zsh.sh. I do not know what you mean by reset: get the old state? Can you show in oh-my-zsh.sh where it is?
    – Timo
    Apr 24, 2021 at 17:23
  • @Timo Did not for me. The ~/.oh-my-zsh/oh-my-zsh.sh script do call setopt correct_all via ~/.oh-my-zsh/lib/correction.zsh. So doing the setopt correct call before sourcing the oh-my-zsh.sh was reverting the behavior.
    – Matt
    Apr 26, 2021 at 19:01

I had the problem when using rspec via zeus, and I'd like to keep auto-correct settings as they seem to work for everything else except rspec, so I never tried any of the other suggestions above.

What I had to do was nocorrect zeus itself :

alias zeus='nocorrect zeus'


I was able to disable autocorrection using


I am using zsh version 5.7.1

  • 1
    That's probably not doing what you think it does.
    – kissgyorgy
    Jan 12, 2020 at 17:36

In case you use oh-my-zsh:

unsetopt correct_all

will disable all autocorrection.

Setting aliases for exceptions (see link below) does not do the trick for me.


  • No, it won't. See man zshoptions.
    – kissgyorgy
    Jan 12, 2020 at 17:37

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .