It was hell at first. It’s like being forced to wear clothes you don’t like to wear. The more I learn about it though, the more I appreciate it. I really like how you can chain commands in Vim whether it be a movement or a search command. Heck, even search commands are considered movement commands in Vim! Replace until foo? ct/foo<RET>.
Three years using Vim taught me a lot about it. I started using different plugins after the first year. NERDTree and TagList are almost mandatory. Since I usually code in Java, it’s hard to get by without an IDE like Eclipse. Thankfully, there’s eclim to help me stay inside vim. Vim can be configured via vimrc. Mine has a lot of BufEnter/BufLeave autocmds there to suit my needs. Not to mention some custom keymappings here and there.