I work as a freelance Objective-C developer (amongst other things), so I find myself butting heads with Xcode on a regular basis. Recent releases have integrated several separate applications that betrayed Mac OS's NeXT legacy, which means Xcode now feels almost the exact opposite of Vim.
Despite the frustrations of working with Xcode, it does do some things fairly well, and I find myself switching between my favoured Vim/tmux setup and Xcode.
Fortunately, we now have XVim (GitHub: JugglerShu / XVim). This makes Xcode behave more like Vim. It supports most of the things I use regularly, apart from Visual block mode. The standard Apple shortcuts are preserved as well, just in case your brain reverts to Xcode's defaults like mine does at random moments.
As well as motion support, marks, text objects, Ex commands, and yank/put also work. It's surprisingly solid. It also loads
~/.xvimrc, so you can keep your XVim configuration separate.
The video on this page shows XVim being used to edit Tapku (a rather useful iOS framework). I've turned on keyboard visualisation, so it displays the Vim commands I'm typing as I experiment with XVim.