Where to place zsh autocompletion script on Linux?
Let me try to help here.
I was trying something similar and this is how I was able to get it worked.
Below solution has verified with oh-my-zsh
on debian distro [ubuntu]
Problem
> Your zsh isnt giving proper completion suggestions say [conda] > This is what you get when you type in # conda tab
Solution
Find the completion script
one great location is https://github.com/clarketm/zsh-completions/tree/master/src
Download the file to completions folder
[~/.oh-my-zsh/completions]
wget https://raw.githubusercontent.com/clarketm/zsh-completions/master/src/_conda ~/.oh-my-zsh/completions
Make sure the completions folder is listed under $fpath
print -l $fpath
What if its not listed It should have normaly added with .oh-my-zsh.sh If not append below to ~/.oh-my-zsh/oh-my-zsh.sh
# add a function path fpath=($ZSH/functions $ZSH/completions $fpath)
source .zshrc
source ~/.zshrc
Execute
compinit
this will build~/.zcompdump
file for the functionscompinit
Troubleshooting
Due to conflicts the suggestions might not be shown try the following
rm -f ~/.zcompdump; compinit # we are clearing the function dump stored by zsh, its safe zsh will rebuilt it.
Try source
.zshrc
source ~/.zshrc
Try loggin out and login
Check the mapping in
~/.zcompdump
vi ~/.zcompdump
search for conda
[/conda]
you should see as below
'conda' '_conda'
Hope someone will find it useful, if so Happy to Help
I got this to work by adding cheat.zsh
to the ~/.oh-my-zsh/plugins
directory. Zsh checks to autoload functions on FPATH
, so try:
echo $FPATH
and then either add to FPATH
or move the file into a folder on the path.
This actually does a much better job of explaining it: https://unix.stackexchange.com/questions/33255/how-to-define-and-load-your-own-shell-function-in-zsh