I primarily use vi for writing programs in Go, Python, and several other languages. The last integrated development environment I truly liked was Turbo Pascal before FreeBSD existed. I used Emacs a long time ago, but now I prefer simple tools that exist on most Unix-like systems by default.
When I think about code, I depend greatly on my imagination. For me, using an integrated development environment is similar to watching a music video. Everything is already organized and presented in front of you. Using vi is more like listening to music before music videos existed. I can imagine the code in my mind. That experience is enjoyable and helps me focus. :-)