Many newcomers to the world of Linux and the Linux programming environment are scared of Vim! Similar was my situation a few months ago when I was reliant on Eclipse CDT for my programming needs. I had acknowledged the flexibility of Vim at the first stance and was willing to try it since quite long; after all, there had to be a reason to why some of the most prolific programmers I have met were not willing to move ahead of it.
Working with massive projects, I discovered the answer-
When abstraction eases out things for you, you tend to enjoy its benefits and avoid looking into unnecessary details with all your focus on implementation. When you are in the urgency to begin outputting, you tend to work this way leaving out the details for future research. That's a newbie approach.
But when you are used to stuff on a daily basis you look for ways to shorten repetitions so much that you wish certain aspects of life are fast-forwarded in macro style. Even an unnecessary mouse click becomes heavy! When you do not want to bother your brain with minute things and reserve it for that juicy algorithm/system design you had planned all the way, its your Peripheral Nervous System that readily volunteers for handling teeny-weeny issues. That's what Vi(m) exploits. Its commands are a bit hard getting used to in the beginning but once internalized, you can even use them while dreaming!
I am loving the tool! Certainly some things win hands down.