They each have their place.
I've never tried vim, but I use vi frequently. I also use emacs frequently.
One major advantage of vi is that it can be found on every Unix/Linux that I've ever tried. I've yet to see a Unix/Linux in which emacs is installed as part of the basic install. When installing OpenBSD on a server, I can use vi immediately to do various file configuration tasks
On the other hand, emacs is extensible and far more powerful.
One of my major development tools is a Dorio text terminal (made by DEC years ago) connected to an OpenBSD server. I can use both quite easily. To make emacs easier, I have configured several of the programmable keys (F1, F2, ... ) to handle some of the more common tasks such as searching.