@ tim-green is right!
As the man page says:
Then the commands are read from $ ZDOTDIR / .zshenv. If the shell is the shell login, the commands are read from / etc / zprofile, and then $ ZDOTDIR / .zprofile. Then, if the shell is interactive, the commands are read from / etc / zshrc, and then $ ZDOTDIR / .zshrc.
Since you do not want to use the interactive shell in vim (using ! At least), your only solution is to add (or source ) your aliases inside ~/.zshenv .
Just!
EDIT: no other modification is required except to put:
set shell=/bin/zsh
in your vimrc.
source share