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.