Long time ago, I used to edit code right in my IDE. For example, assume I work on some Qt project, so, Qt Creator is the IDE I use. I use it for rather long time, so I learned its text editor shortcuts, learned how it behaves, etc.

And one day, I need to work on some Java project. Okay, so I pick Eclipse, or NetBeans, or something else. And, whatever the case, I find it painful, just because I learned how to work in Qt Creator's text editor, and it is convenient for me. So I dig deeply inside the editor's preferences, trying hard to emulate the behavior I'm familiar with. I even try to come up with some color scheme to mimic that of the IDE I used to work with.

It's hardly possible to emulate the behavior completely. So the next step is probably to try some other IDE, just because I don't like the text editor of the IDE we're trying to use now.

As I said before, I find this process of accommodation to IDE's text editor painful. And actually, it's ridiculous: we switch IDEs just because we don't like its editor! Pfff. The IDE may have perfect tools for refactoring, for code navigation, it may fit extremely well in everything else, but I'm still unhappy, because I'd like my text editor to behave differently, or to look differently.

All of this led me to Vim, several years ago. I wanted single, universal, cross-platform text editor; Vim is one of such beasts.

I'm definitely more happy now than I used to be before I met Vim: I always edit code in the same text editor. That's great, but every time I need to run my project, or debug it, or add/remove files to/from project, or perform some complicated refactor, I switch to an IDE, and do what is needed there. For embedded projects, this is MPLABX; for Java, it's usually Eclipse; for Qt, it's Qt Creator, etc.

Vim is a great text editor, but, still, I have a lot of headaches: I want code auto-completion inside my editor, I want to check syntax without leaving my editor, I want to build and run project from within my editor, I want to navigate to some function's definition, etc. For each of the platforms I work with, I have to invent something new: google some Vim plugins, try to set them up, write something on my own, trying to make Vim to accommodate to some particular IDE. For example, I currently ended up writing rather hackish Vim plugin that parses project files of various IDEs (be it MPLABX, or Qt Creator, etc), fetches list of project's files, various options, and makes Vim more or less aware of the project I'm working on.

I also had to invent plugins that allow me to navigate code and to manage per-project options, since I wasn't satisfied with other solutions I've come across.

A lot of headaches. I've spent enormous amount of time setting things up. And all of these troubles could be probably eliminated by some open standard on text editor ↔ IDE interoperation.