For longer and more interactive shell interactions you can use job control, if your shell supports job control (bash, zsh and pretty much every reasonable user shell in existence). Ctrl-Z will suspend vim and drop you back into your shell, you can then unsuspend vim by running "fg" (at least in bash).
Alternatively, my own work flow consists of using tmux to have a split screen terminal, Vim left, REPL right.
Alternatively, my own work flow consists of using tmux to have a split screen terminal, Vim left, REPL right.