I use IntelliJ.
When doing app development I use idegen to generate a IntelliJ project for me. Do the following (assuming Lollipop or newer):
source build/envsetup.sh
lunch ...
make idegen
development/tools/idegen/intellij-gen.sh packages/apps/Settings packages/apps/Settings
and I will be able to open the Settings app in IntelliJ (for example). I setup the SDK manually, and add "base" over "Android SDK" (so I get access to @Hide APIs).
I don't know why I have to specify the project twice, it didn't use to be like that before (Jellybean), but I've grown to accept it.
To build the application, I use the standard "mm" command, together with:
adb install -r $ANDROID_PRODUCT_OUT/system/app/MyApplication/MyApplication.apk
For C/C++ I just use Vim.