I'm using XCode and vim ... XCode for iOS development and for everything else vim. Prior to that I used TextMate ...
After a few weeks of constant vim usage it happens that I start typing vim commands into XCode (or into any other bigger text field). For example I regularly press a/i/o before I start typing the text. Or I try to block mark/yank text selections, etc. instead of use copy and paste :)
After a few weeks of regular usage you start getting a grasp on vim and will constantly ask yourself why all the other editors suck :)
(I tend to use console vim - not macvim. Macvim somehow doesn't feel right.)
For browsing files inside vim I use NERDTree (or if I remember the filename :e <filename>). To quickly open the file's headerfile I use http://www.vim.org/scripts/script.php?script_id=31 - it takes only a :AS to open the file's header file (vice versa) in a new split. (Hint: Map a key to next split/window to switch fast between them. I remapped F1 for this purpose.)
If I really need to have many files open I just open a new tab/window in my terminal emulator. (There are also tabs in vim but I had not a chance to get used to the tab commands yet. gvim/macvim offer more abstract tab support - the tabs are real vim tabs but they are represented as UI tabs. So you can still yank/paste between them but have a more Visual Studio'ish feeling.)