My problem with Vim is that it can't be configured to validate and correctly complete code in realtime (except by mad-science brain grafts like eclim). Note that ctags style word completion is like 1% of enough. The important thing is that code is either visibly wrong (red squigglies) or visibly syntactically valid (no red squigglies). That massively cuts down the contribution of trivial typos to bug hunting. And to do it requires a full parse and analysis of the language being edited, going on in the background as you type.
Without that, Vim is reduced to a quick hacks editor, or an editor for languages where no realtime parse is possible.
Maybe I just don't fat-finger as much as the typical programmer...but intelligent code completion and typo detection are really not things I value in an editor. <C-N> buffer-based completion is more than sufficient when I need to save some typing.
The point of code completion is not just to save typing (although that is desirable benefit), code completion helps you browse around a new library that you're unfamiliar with and read the documentation right in the IDE. I don't know how I would have gotten through the Swing/SWT based assignments in school without have the documentation right there in IDE.
It also depends upon the language you are using. I don't know if you're using Java or not but one can use all the help possible in catching typos while working in Java just due to the verbosity of the language. Programming in Java without an IDE is like working on rails apps without using any of the scripts and generators, it's doable you just have to write all the boring boilerplate code manually.
As with anything, after you start practicing you stop making beginner mistakes. If you switch to Emacs or Vim today, you are going to typo things that Eclipse would have auto-corrected for you. That's because you've never practiced typing correct code from memory. But use Emacs or Vim exclusively for a month, and you'll see that you are much better at programming than Eclipse is. You'll write code more quickly with fewer errors.
Also, using autocomplete to explore APIs is one of the worst programming practices I can think of. The docstring for one method is not nearly enough information to tell you why you should call the particular method of the particular class that autocomplete suggested. In order to be sure you've made a good API use decision, you need to read the documentation and code for the library, and then decide to use it. Anything else is a hackish shortcut that will surely waste more of your time than it saved.
And, if you can't remember the names of methods you know you want to use, maybe it's time to refactor. Or practice remembering. If you want to be bad at programming, Eclipse will make your life slightly easier. If you want to be good at programming, start programming and stop commanding an autocomplete tool.
Code completion, syntax validation, and built-in API documentation are useful features. To say they're things that only beginners or bad programmers use is absurd. I have much better things to do with my time than memorize the exact name and parameter order of every method in an API.
I primarily use Vim as my IDE, so I'm not saying I prefer Eclipse or other IDEs. But I don't pretend that Vim is perfect and using an IDE is a sign of inability.
I've found that using code correction and autocomplete serves rather to break up the flow of putting code down. It's not important that I wrote "mlloc" instead of "malloc", the compiler will catch that later and I can fix it then. The important thing is that I remember how big I wanted to make the memory region, and then what algorithm I was going to apply in the Big Important Loop coming up.
And if you need code completion, your names are too long ;)
I can appreciate continuancy of mind, but red squiggles shouldn't be a deterrant to that. Rather, it is simply saving you the step of compiling before giving you information. You can just as easily train yourself to not worry about red squiggles until you're finished with the task at hand.
As for variable naming, the better question is:
Why would you willingly choose less descriptive variable names when there are editors that will help you produce more readable code?
editors that will help you produce more readable code?
The problem is your editor helps you produce more code, readable or not. The goal is to produce a good program, not more code.
maybe it's because I started coding in the 80's but I've been doing this "autocomplete" and "full syntactical parsing in the background as you type" thing in my brain. Along with my ability to refactor "bareback" it may be why I prefer tools like vim over IDE's.
Not all of us have the comfort of permanently working in a programming language we're familiar with. For languages I know pretty well, like C++, I only use vim. But for languages I hardly ever use and only if I have to, a "real" IDE can greatly improve my speed of development.
What language is so different from the ones that your familiar with that you need tools? Autocomplete doesn't help you learn a language, it just auto-types the names of methods that happen to be available in a certain class. It doesn't tell you that you've selected the right class or right method on that class, though. That requires understanding of the code you're writing and the code you're using. And at that point, you might as well be using vim.
Typing is easy. Programming is hard. Optimize for programming.
Without that, Vim is reduced to a quick hacks editor, or an editor for languages where no realtime parse is possible.