vim is great and I use it all the time but not for Java and PHP where the IDE support is so good that it really makes a difference.
vim is great and I use it all the time but not for Java and PHP where the IDE support is so good that it really makes a difference.
Vim also contains excellent autocompletion (several kinds, actually, most powerful of which is the omni complete) but it's not restricted to one language. It may, however require you to install your language specific plugins. Vim ships with C and C++ mode, which requires you to build a ctags database of your source code. In addition you might want to add cscope for source code navigation.
Eclipse has autocomplete perhaps for a handful of languages but Vim has support for autocompletion in tons of languages.
In addition to omni-complete, vim can have an user defined completion (C-x C-u), which is handy to set to do syntax completion (set completefunc=syntaxcomplete#Complete). Vim ships with tons of syntax files, which are used for completion and syntax highlighting. This is not super useful for programming, but is excellent for different kinds of configuration files, so you don't have to memorize (or look in the manual) for the configuration options you use.
And I'd rather use Vim without autocomplete than have to deal with Eclipse. Thankfully I don't have to.
Emacs has great autocomplete too.
To me the IDE features make up for the minor annoyances of using vi/vim emulation.
EDIT: Reading some other comments, there is Emacs-eclim that gives you Java IDE features inside Emacs. So forget what I said about Java: Emacs can now handle even Java well!
For dynamically typed languages, Emacs can essentially be as good as possible fairly easily. I've been using it for JavaScript and Racket lately, and it's been really great for both. For statically typed languages, there are often type-aware tools that make it as good as any IDE--for example, I've used TypeRex[1] for OCaml; there is also ENSIME[2] for Scala and similar tools for a bunch of other languages.
[1]: http://www.typerex.org/ [2]: https://github.com/aemoncannon/ensime
Just because Emacs is a great text editor does not mean it isn't a good IDE. It has some very good support for a whole bunch of languages. I'm under the impression that Java is an exception to this rule, but I really don't know--I haven't used Java in a couple of years and really hope I will never have to use it again.
So, all told, I think this oft-repeated advice to use an IDE instead of a text editor like Emacs is misguided: Emacs is much more an IDE than just a text editor. Perhaps it's accurate for Vim, which I've never used (and I wouldn't be surprised if Vim support IDE features well too), but it isn't anywhere near true for Emacs.
That said, Emacs and Vim also have intelligent autocompletion depending on the language and support for it has only been getting better.
disclaimer: numbers have been made up
1. The vast majority of things that I did were repetitive and were already solved in other environments
2. Knowing the minutiae of the stuff that I know now does not improve my skills at all - production matters for shipping, minutiae matters for interviews. Best way to get a job is to produce so much - you don't have to interview :D
Now I just use whatever is the most widely deployed, best supported environment for each language (e.g. Visual Studio for C++ and Eclipse for Java).
The one thing I have kept is my vim foo by using IDE specific plugins :D. Pick your tools carefully - and don't fall into the "true final solution trap" that people try to sell you.
Choose the right tool for the right job.
It actually works so well that the "emacs eclim", based on eclim, "Just Works! [TM]" and gives you, right inside Emacs, the Eclipse auto-completion.
Even when stuck in the Java/ORM/Hibernate/SQL/XML hell (at which point I want to kill myself and really question the company's "productivity"), I'd still rather use Emacs + emacs-eclim then Eclipse (or IntelliJ IDEA -- which gives both NetBeans and Eclipse a run for its money btw).
Thing is: adding Eclipse / IntelliJ support to vim / emacs is not that hard. But turning the "text editor" part of Eclipse into Emacs just looks like mission impossible.
IIRC using eclim you can replace the (very lame) text editor of Eclipse with vim. So you get vim running right in the middle of your Eclipse.
What's not to love there?