.bashrcや.zshrcなどにaliasを書いても、その設定はログインシェルやインタラクティブシェルでしか読み込まれないので、vimで :!{cmd} したときは適用されない。

:set shellcmdflag=-ic として、インタラクティブシェルとして起動して、外部コマンドを実行することもできるけど、vimに戻るとき $ fg しなくてならなくて面倒。

常に使いたい設定は、bashなら .bashrcに

export BASH_ENV='~/.bashenv'
source ~/.bashenv

などとしておいて、.bashenvに設定を書く。さらにaliasを展開したい場合は.bashenvに shopt -s expand_aliases と書いておく。

zshの場合は$ZDOTDIR/.zshenv ($ZDOTDIRは指定してない場合は$HOME) に書く。

ただ、そこで書いた設定はbashやzshのシェルスクリプト実行時にも適用されてしまうので、aliasが悪さをしてしまうことがあるかもしれない(zshのシェルスクリプトの心配までしなくていいと思うけど)。

そこで$BASH_ENVの設定はvimrc内で設定( let $BASH_ENV=expand('~/.bashenv') )するようにするとか、~/.vim/.zshenvに設定しておいて、 let $ZDOTDIR=expand('~/.vim') して、シェルスクリプト実行時は読み込まないようにしたほうがいいかもしれない。

参考にしたサイト