Enabling case insensitive completion in ZSH
ZSH has been the default shell in MacOS since 2019. I recently started using a Mac again, after being away from the ecosystem for a couple years. While trying to become familiar with this new shell, I found out that there is a way to enable case-insensitive navigation in the shell. This means that, when using Tab to autocomplete directory or file names, ZSH will offer all matching options, regardless of casing.
For example, say we have the following content inside a directory:
$ ls
Code/ Documents/ Music/ CAD_info.doc call.mp3
Without case-insensitive completion (the default), typing ls c
and pressing Tab would give us the following options:
$ ls c
call.mp3
However, with case-insensitive completion enabled, ZSH will return all files and directories starting with C:
$ ls c
Code/ CAD_info.doc call.mp3
To enable this functionality, add the following snippet to the end of your ~/.zshrc
file (or create one if it does not exist):
autoload -Uz +X compinit && compinit
## case insensitive path-completion
zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}'
zstyle ':completion:*' menu select
Next time you open ZSH, the functionality will be enabled. If you wish to enable it in the running terminal, you can also run source ~/.zshrc
.