Hm, so the functionality you describe is not possible with vim? I was planning to switch to vim in the future. I have used Emacs before, but I never became really good at it. However, the functionality you describe really seems quite important.
I know of various attempts to get this sort of functionality in Vim but I've never been able to get it to work very well. The bottom line IMO is that Vim is not designed for this sort of thing while Emacs is.