Yes, of course, the sockets are the answer to everything (and BTW, d-bus uses sockets as well, e.g. /run/dbus/system_bus_socket
on my current system), but the problem is no standard for the communication over these sockets (or where is the socket located). For example, X11 developed one system of communicating over their socket, but it was used just by few X11 programs, and everybody else had their other system of communication. And even if an app found some socket, there was absolutely no standard how exactly should programs communicate over it. How to send more than just plain ASCII strings? Each program had to write their own serialization/deserialization code, their own format for marshalling binary data, etc. Now there is just one standard for those protocols, and even libraries with the standard (and well tested) code for it.
Not vim necessarily, but I would really suggest thinking about a plain text editor of your choice and some of those lightweight markup languages (Markdown itself, reStructuredText, ASCIIDoc … I prefer rST, but they are mostly the same). Exactly because it allows me to concentrate on the content and ignore formatting. Besides, formatting, do you write for print or as everybody else these days for HTML? Why do you need a large word processor which is build primarily for preparing documents for print? Every serious text editor has some kind of plugins with spellcheckers, grammar checkers, dictionaries, etc.