MacVim has good code-completing and most of the advanced features out of the box, if you use YADR or similar ( https://github.com/skwp/dotfiles ). I like to have the same environment regardless which language I'm using ( objective-c, python, java ... latex, html).
I usually use Xcode/IntelliJ for refactoring and some more advanced functionality.
I think this is one of the reasons I always shied away from Vim. I can use my basic Emacs muscle memory in almost any text editing environment. But I'm sure you can brew up a pretty powerful Vim environment too with a little legwork.
I usually use Xcode/IntelliJ for refactoring and some more advanced functionality.