I suppose it depends what you're coding. For Objective-C I use xCode. For Android I use Android Studio. They provide many key affordances because they are tuned to their particular use cases.
However, if I'm writing in shell, Ruby, JavaScript, or any other oddball language without a purpose-built IDE, a well-tuned Vim setup, and extensive familiarity with how to use it, works wonders.
There's a plugin called 'ideavim' for android studio (and all jetbrains editors). I use it in webstorm and intellij and it works great, gives you the best of both worlds.
Used to be the same with me. Then I got a Mac and realized that some keys are missing. My goal was then to learn how to do the stuff that I commonly do in GUI editors: edit multiple files at the same time, copy&paste code around, navigate through the file system conveniently... Googling for these things took some time but now I'm pretty fluent in vim. Also I like the workflow having vim open and then ^Z into the command line to run unit tests.
Even better than ^Z to run tests is temporarily mapping a key combination to run them. For instance, I'll do :map ,t :w\|!rspec<CR> which lets me type ,t in command mode to save the file and run the tests. Vim will show you the output of your command and then wait for you to press a key to return to Vim.
Actually, there are a bunch of plugins that will use a subshell to run this, and then bring it up when it's done so you can keep working while the tests run.
Not so important for a quick script but if your tests/compiling takes a few minutes, totally worth it.
That's why I will never master in Vim. Because files that I edit most are hosted locally