Before you read any further, visit the Wikipedia page on the official definition of editor war (I had absolutely zero idea this was a legit thing :p)

Choosing the perfect editor for programming can be such an intensive task. How do you zero down on one perfect editor for all the languages you can work on?

I have fiddled around with editors for quite a lot of time now, but somehow it doesn’t get monotonous. But it is sensible to make a decision and stick to it! So here’s my experience with Visual Studio Code etc. and why I keep coming back to Vim, particularly the awesome Vim distribution called Space Vim.

## Visual Studio Code and the works

There is absolutely no doubt in my mind that Visual Studio Code is a phenomenal editor. It is quick, responsive, is completely extensible, has immense developer support. Any language you name it and there’s all around support for it either natively or through plugins. I’m sure you have heard of the cross platform mobile application framework Flutter, well Visual Studio Code is officially fully equipped to handle the Dart language, and even cooler things like running, debugging and hot reloading applications. I primarily use Python and it’s quite I’ve had good experience with that too.

Some strong competitors to this are GitHub’s Atom, Sublime Text and Adobe’s very own Brackets. I haven’t used Brackets at all so no comments on that from my side. Sublime Text has been the strongest competitor and a developer favorite since a long time. Rightfully so, it is faster, lighter on the CPU and the memory. But I think this is where Microsoft has done an impeccable job of increasing their user base, through consistent updates and increasingly functional plugins like Live Code Sharing. Sublime Text and Atom still don’t even have properly integrated terminal support. Another point that’s crucial at least for me as a developer, is the visual appearance. Full points to Atom and Visual Studio Code for this. They seem to be more consistent than Sublime Text in their appearance.

Now here’s the gripe with Atom and VS Code. They’re built on this little platform called Electron. To be fair the name is quite an irony. Electron is neither light on the CPU nor easy on the memory. On an average you can observe close to a couple of hundred megabytes of RAM consumption. From someone with a conservative attitude towards hardware resources, that’s a tad bit high. Sublime is much better with memory management. One thing I’ve seen that both of them have in common, the python plugin I used would, over time, occupy a whole lot of memory forcing me to close and restart the editor. This is probably just a bug but it was definitely a deal breaker.

## Vim & Space Vim

I’ve been on and off of Vim a whole lot of times. Some or the other thing would just not work and that would make me go “Ah, damn it, I’ll just go back to what I was using before”. Even then, the whole concept of Vim (and Emacs) seems to be more developer friendly than anything else. It is difficult setting up Vim as a fully functional IDE with good autocomplete, folder explorer, etc but once you do it and you get used to the shortcuts, it’s coding nirvana! There are a lot of A little while ago, while scouring GitHub for open sourced Vim configurations, I discovered SpaceMacs. It’s a super charged Emacs distribution which is supposedly easier to customise than the standard Emacs. According to their tagline “The best editor is neither Emacs nor Vim, it’s Emacs and Vim!”. Since I had never used Emacs, I was lucky enough to land at SpaceVim, which is a super charged Vim distribution. As a formal analogy, if SpaceMacs is the DC version of Vim, SpaceVim is the Marvel version of Vim. The way it is customisable using layers is so good, all you have to do to get support for a language is to enable the required layer. And rest of the customisations are similar to hwo you do in a standard .vimrc file. As for the shortcuts, they are already set up and documented, though of course can be customised. It’s the closest I’ve come to using Vim as a functional IDE. Now this is the good part, with all of these customisations, Vim still consumes a little less than 20 MB of RAM while working on a Python file. Oh and this same configurations works with both vim and gvim. If you are working on a server and you think you’ll survive by using Nano, you’re completely mistaken my friend, Vim is your saviour.

One suggestion I’ve been given a lot of times, is to install a “Vim mode” plugin in say something like VS Code. All I’ve to say to that is that I’m yet to find a plugin which enables the same, completely bug free.

There are other Vim distributions too that you can check out like VimR, spf-13 Vim and others. That’s it for now.. Yes I’m a moderate Vim fan but I’m sure I haven’t reached the stage shown below :p