alias vim_failed='prove --state=failed,save t -l; vim $(prove -D --state=failed)';
This will trample on any previously failed state, but aside from that, when you type vim_failed, it will run all of your tests and automatically launch vim with the failed tests as arguments :)
Right now we can't conveniently deal with this because TAP diagnostics are unstructured, we can't easily capture this. However, we're working on the new version of TAP and we should be able to handle this.