This comment is really a tangent to the above topic.
Like 8 years back, I was in a java one conference, James gosling was on stage and some one asked him a question about emacs. His reply was, there are so many good editors now and emacs was written for his earlier times.
Before this incident, I used to feel so much pressure to learn something command linish and primitive like vim or emacs to fit in with the geek crowd and look more techie.
After this incident, I never touched emacs again.
The question here is mastering vim why? is it worth it?
Did you just call Emacs primitive? You judge the only piece of programmer productivity tool worth using because someone whose job is to push development tools dismissed it from a podium, 8 years ago? Gosling might have discovered Emacs, but 8 years ago, he was on a payroll to push the One Platform. At the time, Sun and its staff had plans for world domination and had no trouble desecrating what anyone held dear, in order to create a one universal platform, with programmers interchangeable and replaceable as spark plugs; a heavily customized development environment would pose a threat to this.
The benefits of mastering your tools are economical and felt in your pocket and productivity. Every minute you spend waiting for an IDE to move its fat hind around to get something done, is a minute lost from your working day. If your aim is to be productive, and not just "replaceable", then there is no need to shackle yourself with a lowest common denominator environment.
You don't spend 100% of your time writing code in one language or tech stack, in an IDE; there are hours spent researching and taking notes, writing documentation, coding in a myriad of different languages, etc. The point of using a powerful editor like Emacs and Vim is to streamline your work, all of it. It's a generic, customizable UI to automate everything that buzzes and moves in your machine. Writing code; interacting with various interpreters, compilers and debuggers; taking notes and TODO lists; etc.
Java needs an environment that can generate, parse and rearrange Java code in a way that vimscript just isn't suited for. Even in Emacs it's a Herculean effort to make the editor understand Java at a deep enough level. Generally, if the language you're using co-evolved with a particular editor, use that editor, not vim. (That's not limited to Java.)
On the other hand, C as a language grew up alongside vi, as well as the Unix environment it leverages so well. Languages with a nice REPL, like Python and Ruby, also are concise and flexible enough that any text editor will do; the languages are meant to work well enough with minimal editing capabilities. In those cases, vim is still great, because it's optimized for rearranging text of any kind.
I know hard-core Java people that use Vim. It integrates with Eclipse (by talking to a headless instance over a socket) for the refactoring stuff. Vim for the editing, Eclipse for the Java munging. Seems to work very well.
Never use an "IDE" unless there is absolutely no other way.
How about a text editor that just obey your will? That would obviously be the ideal thing to do. The problem is, it's not yet possible.
But we still can try to approach it. You can train to type so fast that your fingers move at thought speed. You can use a keyboard layout and a text editor that helps you do that.
If you type and edit lots of text, the worth of advanced editors is obvious: the various short-cuts they let you use makes you faster. Because of that, whatever you do with it is easier. Because of that, you do more.
Learning to properly use a good editor is a bit like learning to touch-type. Slow at first, but the rewards (better comfort and greater speed) makes you wonder why you didn't do that earlier.
Like 8 years back, I was in a java one conference, James gosling was on stage and some one asked him a question about emacs. His reply was, there are so many good editors now and emacs was written for his earlier times.
Before this incident, I used to feel so much pressure to learn something command linish and primitive like vim or emacs to fit in with the geek crowd and look more techie.
After this incident, I never touched emacs again.
The question here is mastering vim why? is it worth it?