Zsh wants to autocorrect a command, with an _ before it
Solution 1:
This is command autocorrection, activated by the correct
option. It has nothing to do with completion. You're seeing _ruby
because zsh thinks there is no ruby
command and it offers _ruby
as the nearest existing match.
If you've just installed ruby
, it's possible that zsh
has memorized the list of available command earlier, and it won't always try to see if the command has appeared in between. In that case, run hash -rf
. Future zsh sessions won't have this problem since the ruby
command already existed when they started.
Sometimes, when you change your PATH
, zsh forgets some hashed commands. The option hash_listall
helps against this. As above, if you can force zsh to refresh its command cache with hash -rf
.
Solution 2:
You could make an alias:
alias ruby='nocorrect ruby'
It's what I did when zsh kept asking me if I meant .meteor
when I typed meteor
because auto-correct is still useful from time to time.
Solution 3:
I find the autocorrect feature can get annoying at times. So I do in my ~/.zshrc,
DISABLE_CORRECTION="true"