Emacs probably doesn't have the best support out-of-the-box to navigate a project, but it can be done with speedbar and ECB [4]. Alternative ways to get around source code include using dired, the directory editor, the various grep commands [5], and some form of tags (I like to use exuberant ctags [6]).
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.
I've been hot and cold on emacs over the years. I've used it enough that there is a lot that I really like about it and that I'm annoyed by not having in other editors. But that list of links is the reason why ultimately I have decided to spend my time in a different editor.
Yes anything is possible and people have done work that probably intersects with what you're looking to do. But rarely does anything just work.
I spend too much time try to make things work and re-implementing features that exist in other environments. I tend to use Textmate and Intellij -- although extending Intellij is such a heavy process that I pretty don't do it.
"But that list of links is the reason why ultimately I have decided to spend my time in a different editor."
Actually most of the functionalities I mentioned are available out-of-the-box. Ediff just works. Version control just works. I sent a long list of links so people could have a better idea how these features work. It's true, though, that emacs doesn't have everything out-of-the-box and you need to download and install and configure things, but the same is true for every single editor and IDE out there.
True ediff, vc-dir, and ecb are all in there. And I can only speak for my own work-flow but with each of those I needed to make modifications to have it work in a way that I liked. And ultimately never got to a place where I was totally happy (except with ediff).
I do believe that people have gotten it configured just right and that they are extremely productive with it. But for me there was just always one more thing that I needed to do from change the appearance slightly or override the annoying way that vc-dir takes over existing windows. I end up just wishing that the defaults were a little bit better.
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/
[2] http://vimeo.com/2871241
[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...
[6] http://ctags.sourceforge.net/
[7] http://www.gnu.org/software/emacs/tour/