I have created a smart Zshell omni completion for Vim. You can use this plugin when coding a Zshell script in order to gain:

1. Automatic completion of all of the existing parameters and only after a dollar $… or at the command position (i.e.: when assigning PARAM1=value).

2. Automatic completion of all of the existing arrays' and hashes' keys (i.e.: subscripts) and only when inside a VARIABLE[…].

3. Automatic completion of all of the existing function names and only when at the command-position, i.e.: after a new-line, or an `if`, or a semicolon, etc.

Homepage: https://github.com/zphere-zsh/zsh-omni-completion