I just started using Zsh lately for some of the integrated support in the shell prompt for my Git status etc.
When I type in:
ruby -v
I find the autocorrect feature can get annoying at times. So I do in my ~/.zshrc,
DISABLE_CORRECTION="true"
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
.
Sometime ago after an update, I got command auto-correction enabled which I don't want. If the same happened to you and you want to revert it, in the ~/.zshrc file you'll have make it:
# Uncomment the following line to enable command auto-correction.
ENABLE_CORRECTION="false"
or comment it as per bellow:
# Uncomment the following line to enable command auto-correction.
# ENABLE_CORRECTION="true"
Just a note, on my zsh (version 5.7.1 on macOS), the DISABLE_CORRECTION didn't work.
I saw in my .zshrc file the following two lines, which I then commented out
setopt CORRECT
setopt CORRECT_ALL
That did it for me.
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.
I had the same problem even when the command is not installed.
I can solve it using the CORRECT_IGNORE
variable in my .zshrc
# OPTs to enable
setopt HASH_LIST_ALL
setopt CORRECT
# Zsh variable to determine what to ignore,
# in this case everything starting with _ or .
CORRECT_IGNORE="[_|.]*"
I hope it helps to you or anyone with this issue