Evil is the most recent 'vim-mode' for Emacs.. I'm sure there're still few bugs in it but as far as I can see, it's really good. The nice thing is how easy it is to configure/change the default behaviors and also how fast the mainteners/implementers answer your question.
Also, I think it's important to point out that these mode try to "integrate" as best as they can with Emacs. So, it's not Vim in Emacs, but more, Emacs with Vim' best features and keybinding. (Arguably the best feature of vim). For instance, evil for emacs is a little bit like clojure for Java. I.e. it's a totally different beast but doesn't force you to make dozen of wrappers.. you simply use both at the same time.