To give examples for the things you mention, emacs has an interface for version control that works consistently with CVS, Subversion, bzr, git, hg, and others. And if you need something more powerful you can use a mode for your specific version control system, like magit for git [1] (I suggest you check this magit screencast [2]). Emacs has a built-in mode to compare files (ediff) [3], to compile programs, run interpreters inside emacs, and so on.
You can see a good overview of these features at [7]. I'm sure you can have a similar setup with vim.
[1] http://philjackson.github.com/magit/
[3] http://tech-rantings.blogspot.com/2008/12/emacs-diff-ediff-t...
[4] http://ecb.sourceforge.net/screenshots/index.html
[5] http://www.gnu.org/software/emacs/manual/html_node/emacs/Gre...