The problem with Vim (and Emacs) is that they do not support anything modern, not even ctrl-z/x/c/v.
VIM has the "VIM Easy" mode, which when used on MSWindows would do Ctrl-Z/X/C/V out of box. And even select text when holding Shift and moving around with cursor keys.
Shortcut to VIM Easy is preinstalled. If you complain about it, then you probably never really used the VIM. Or are you complaining about the *NIX "vi"?
For programming Eclipse or NetBeans or Visual Studio is just miles away what of vi/emacs can do, especially out of the box.
The problem for the professionals is not what the IDE can do out of box, but what can it be made to do. Eclipse or NetBeans or Visual Studio - all suck horribly at everything for what there is no button premade. And when there is a button for everything - they suck at finding this right button.
But I'm not planning to contest the point that VIM is not IDE. No, it is not "VIM is bad IDE" - it is "VIM is not IDE". (This is different for Emacs, though: it is an IDE and then some more. One needs to learn it. And lack of good in-depth tutorials is actually what turned me off from the Emacs.)
The thing about VIM is that it integrates nicely with the system, instead of reinventing it. And it also provides great automation facilities with macros, mappings or scripts. They are fairly simple and can be learned in 1-2 weeks, which is a small price to pay for the ability to control 100% of your text editor. That is the capability no other editor offers.
To get vi/emacs to work nearly as good as good IDE is just too big a job.
(Please do not say "vi" when you really mean "VIM".)
In the project Neovim the work going on to make the Lua the built-in scripting language and improve VIM's plug-in framework. All that to specifically allow to create IDE based the VIM. (Though in my opinion, the direction of the Neovim effort is misguided. They should have went in direction of allowing VIM to be easily embeddable into other applications.)
So in the future, there might be an IDE based on VIM. But not right now.
For example NetBeans ctrl-b (go to declaration). Sure, you can install ctags, configure it, run it, tinker with it, tinker some more, add custom rules, search net, rinse-and-repeat and eventually you'll get something resembling ctrl-b, but not quite the same.
This is probably the most unjustified complain you throw. The tags support in VIM is very good - if you bothered to RTFM. Literally every book and tutorial describe these highly sophisticated and inexplicable 3 steps involved: install the exuberant ctags, put into the .vimrc the line ":set tags=tags;/", and finally run "ctags -R ." in the root of the project.
If you use plugins like YouCompleteMe, they would do it for you automagically.
In the end, if you can't bother to read the VIM's help (which is by far the best help for a text editor there is out there) then VIM is definitely not for you.