There is a certain organizational aspect here that I think is important to emphasize: the given paradigm is that vim is a text editor forming one part of the design environment. Assembling this environment inside a tmux session is particularly easy and powerful. And plugins can add some quality of life.
In addition, I also like the vim-slime plugin. All this does is facilitate sending lines/regions/blocks to a REPL (or in principle, any tmux pane). It's similar to the tmux send-keys function described in the OP.
A different paradigm of vim use is growing in popularity, which is the transform vim into a full IDE on its own.