This is not meant to create any kind of flamewar or anything, this is just my take on the real differences, technical or otherwise.
Let's start with the fact that they are completely different things if you look at them, for very different publics. Emacs is the platform, Vim is the editor. Vim could never beat Emacs as a platform, Emacs couldn't beat Vim as an editor. And those are facts.
Vim has the most impressive things in it in order to edit text in the most impressive ways possible. You see some Vim users and they just move ALL around the place, sometimes it's even hard to see their cursor from their speed. Sometimes it's hard to figure out what they are doing because they are doing it so fast.
Emacs has the most impressive things in it in order to be able to basically do whatever the hell you want in it. Users can really have everything running on Emacs if they so desired. Here's a short list of some of the stuff Emacs can do by default:
- A browser
- IRC chat
- Built-in shell
- Async OMG!
Vim has trouble with async, but its community has found several ways to achieve async in Vim, vimproc.vim for example. I think there are several ways anyway...
Emacs handles async like a champ since the moment you install it.
Vim startups in like 2 tenths of a second, with several plugins installed, for
me. Practically instantly with
vim -u NONE.
emacs -q quite quick, maybe like my usual Vim config. But with my
init file it takes one or two seconds. Granted my config really has to be
Vim uses VimL, which is slow, quirky and not all that powerful, although some people have done some really cool stuff with it.
Emacs uses Elisp, a variation of Common Lisp. It is a Lisp, what more is there to say? It's awesome automatically.
Now here is an interesting fact about Emacs. It technically has all the power and potential needed to make it as good as Vim at editing text, to an extent, except its interface sucks and isn't modal. There's a thing called Evil that tries to fix that. It does quite a good job, but for the advanced Vim users, like Drew Neil and Tim Pope, I don't really think it cuts it.
Vim users are, as bling once said, tenacious. You will most often find something be implemented in Vim first before it's implemented in Emacs, no matter how hacky or dirty the method is, they will most certainly do it first. Except stuff that is just plain impossible in Vim. Like this: https://github.com/zk-phi/sublimity
That is how I see it. I'd really love to see Emacs as a platform that runs Vim on top of it and that would practically be the best text editor.