Você deve usar um editor síncrono para crontab -e
, ou seja, aquele em que o comando não retorna até que a edição esteja completa.
Uma alternativa é esta,
crontab -l > ~/.crontab
gvim ~/.crontab
# wait until editing is finished
crontab ~/.crontab
Ou simplesmente use o gvim no modo síncrono:
EDITOR="gvim --nofork"