Hmm. I use both vim (and vi since '93 or '92), and tmux, but maybe not with this type of workflow - mine is similar. For a shell, I use ConqueShell (and ConqueGDB when debugging) and have a vertical split bound to a leader (and you can use the output as a normal buffer - copy, paste, scroll, search using regex in normal, etc are some of the benefits). I've got shift+arrow bindings for navigating around buffers in splits, and alt+arrow for navigating around windows. As for running tests, I have autocmds that do bindings based on filetype for generic operations, and if there's a test I run often on a project, I just create a leader binding for it. If you're thinking about this type of workflow, give ConqueShell an eval. YMMV.
edit: fzf seems to work a lot like CTRL-P.