another +1, but you need to learn to use it properly. Tags, windows, changing files, external commands, macros, etc. It's not user friendly, in fact it's downright user hostile, but it's powerful, and written for hackers.
vim is one of the most user friendly pieces of software I have ever used. The interface is incredibly efficient. The designers put great effort into making sure that common tasks were one or two keystrokes that usually don't even require moving your fingers off the home row.
Just because it's not the most discoverable interface doesn't mean it's user hostile. I wish more software designers would look at vim as an example. A text editor falls into the category of software which users spend a ton of time using. For those types of software a steeper learning curve is completely accpeptable if it means the users can operate the software without even consciously thinking about it once they've learned how to use it.
There it lists "... concision, expressiveness, ease, transparency, and scriptability." It then expands on each, but mysteriously quote "Discoverable" in place of "scriptability." Very odd.
But I digress ...)
Now the question is - without having to wade through plodding tutorial after plodding tutorial, how can we help people discover the interface? This doesn't just apply to vim, it applies to your web site, or application, or even your company procedures.
It's now a long time since I learned about :sp and ctrl-w to create and move between windows in vim. How can we help others find these things? How can we help them find the fast way of doing things on our web facility?
As a parting note - I wouldn't equate efficiency to "user-friendly."
First problem: vim has already implemented any feature you can imagine, with more refinements and related features than you can imagine. But you have to imagine it before you can find it...
Second problem: And even then, you can't find it in the help (it's organized like a professional index - like that of a legal textbook - you have to know what you're looking for before you can find it). Google solves this problem.
Google also helps solve the first problem, of "what to search for": you search by describing the difficulty or problem you have.
A brilliant resource for this is Stackoverflow. It's works well for developer-centered, technical questions.
The internet is the vim help: "a user generated FAQ". But this is just a way to cope with poor discoverability - the real answer is to design the interface to be discoverable.
You're very right. I've been using it for years and I still haven't gotten around to 'properly' learning vim.
It's not exactly laziness, it's more that I got really spoilt at some point in the past by writing my own editor, but maintaining and porting it to new platforms as well as lots of work on customer machines has made it infeasible to keep the project going.
So, I use vim. But at the bare minimum level, I really should go and do something about that.
You don't really have to learn how to use all the bells and whistles for it to be effective and ideal. Heck, I use it because it saves me having to transfers files or allows me to develop on a separate box through ssh if I don't feel like setting up expand drive or the likes.
Also, hjkl is the most beautiful thing I've ever experienced, I constantly wish TextMate and VisualStudio gave me the separation from edit/navigate mode like VIM does.