Carriage return

I have some raw data from terminal output which uses carriege return for formatting. Carriage return sets the pointer to the first character on the line, and subsequent characters will overwrite what was there before. The challange is to simulate the terminal behaviour in vim. I'm kind of unsure if I should have skipped lines 9 and 15, since there might be some interesting solutions which are not that generic. Happy Golfing!

Input

+--------------------------+
|                          |
| A nice header in a frame
+--------------------------+


Emacs rules!
Vim  


A short line
Some longer text replacing it

+----------------+
|                |
| Another header
+----------------+

Several carriege returns on a line
O few  
A

B few more simple ones
A
two reduce the amount
to 
off specializing the solution
of 
dust for this file
j

Output

+--------------------------+
| A nice header in a frame |
+--------------------------+


Vim   rules!


Some longer text replacing it

+----------------+
| Another header |
+----------------+

A few   carriege returns on a line

A few more simple ones
to  reduce the amount
of  specializing the solution
just for this file