The answer is easy. I don’t only write C++/Qt code. I do a lot of different tasks over the day: Writing C Code, C++ code, reviewing patches, applying these patches and test them in various different projects. Then editing a CMakeLists.txt, writing technical documentation using LaTeX. Writing GNUplot files to plot data for my documents. Back to development I start working on a Bison grammar file. Then I need to update some Doxygen documentation. Then I need to switch over to my admin tasks, log into some servers using ClusterSSH and update some crontab files, adding new accounts, etc. Using Vim on console using SSH also works via low bandwidth networks when I’m on the road, where VNC or other remote desktop tools would be unusable (and I don’t install X anyway on servers, why should I?).
Guess what? All this can be done with Vim. No matter if locally or remote via SSH. And Vim supports editing all this file types mentioned above. There is no need to use 10 different tools. I can do that with Vim and can always use the same efficient commands and motions. It’s much easier to remember some Vim commands then learning to use 10 different tools and switch between them and remember what works in one tool and what works in another. Also Vim works cross-platform. So no matter if I work on Windows, Linux or Mac. The same keystrokes work on all platforms.
Vim is the Swiss army knife for editing tasks.