1 Month Vim Only Challenge – The Whats and The Whys

The Whats

Two days ago, on Friday evening, I uninstalled VSCode and officially started my #1MonthVimOnlyChallenge.

In fact, I am currently writing this article in vim.:w

My plan is to use vim as my editor/IDE of choice for 1 month. No matter what happens, no matter where it leads me – for 1 month I am not allowed to use any other IDE/coding editor/text editor. Only vim is allowed, although I will probably check out neovim as well at some point.

This includes my personal stuff – coding side projects, writing articles etc. – but, perhaps more importantly, this includes my day job as well. And between my day job and personal stuff, I do a lot of writing on a daily basis, including weekends. So that means a lot of vim over the next 30 days.

This article serves as a kickoff for this project. I plan to follow it up with 3 or 4 short articles, released on a weekly basis, documenting my progress, setup and reflections on using vim as a primary editor.

In the last article of the series, I plan to make the ultimate decision.

Either I will go back to the usual way of doing things, or I will stick with vim for the foreseeable future. Nothing is predetermined here. My decision will fully depend on how the next 30 days will go.

Apart from weekly articles, I also plan to do more current updates on Twitter. There, on a daily basis, in real-time I will be sharing my thoughts and experiences of using vim.

Now, at this point, it’s important to stress that I am not going into this challenge completely fresh. I’ve already used vim during my university years, the last time around 6 years ago. However, during that period, I never got to a point where using vim would actually bring me significant productivity benefits. It also never felt 100% natural.

So this will be the barrier I will try to cross. I don’t have to become a vim expert. I don’t have to be the fastest programmer out there. The main question after 30 days will be this:

Does this feel natural to me?

The Whys

There are actually quite a few reasons why I am trying to attempt such a challenge at this point in my life. So I’ll try to summarize them briefly, as a list in no particular order.

1. I Want to Spice Things Up

I love my current job. But at a certain level of experience, many programming tasks become mundane and, frankly, a bit boring.

So I am trying to spice things up for myself. Make things more interesting. Make things a bit harder, more challenging.

Sometimes it’s important to switch things up just for the sake of switching things up. It’s like changing the wallpaper on a computer. There is no real reason to do that. But sometimes you just want to make things feel fresh again. And sometimes just changing the wallpaper can feel like literally having a brand new computer.

2. I Underuse VSCode Anyways

Recently my colleagues at work started sharing what VSCode plugins they use. Most of them had at least ten plugins installed and running. Meanwhile, I had… one.

Last week a junior dev asked me what was a keyboard shortcut to do a fairly basic task in VSCode. I didn’t know. I realized I don’t know almost any shortcuts.

So you can see that, even though I’ve used VSCode literally for years now, I significantly underuse it. I might invest some time in order to fix that. But if I have to exert effort, I might as well do it in a direction that interests me more. Which is vim.

3. I Like The Command Line

This probably relates to the fact that I am used to using the command line, rather than GUI tools. I enjoy it and, depending on the tool, sometimes I feel it gives me a better grasp of how things are working under the hood.

I use git in the command line exclusively. It’s funny to me because people are scared of using git in the command line, while I am scared to use git in any of the GUI incarnations. I just have trust issues.

I also very, very, very rarely use a GUI debugger, which is one of the most common arguments people give me for using a solid IDE. I belong to the good old console.log school of debugging. No matter how much people are joking about that, and how much amateurish it seems, for me, 99% of debugging is always the question of "what value this variable has at a certain point?".

And for that, console.log was always more than enough for me. Probably because I do mostly front-end/browser stuff, where such logging is particularly easy and powerful.

4. I Want To See Where Vim Is At These Days

Now, there obviously are capabilities of VSCode which I am using extensively. Those are mostly related to the exceptional TypeScript support that VSCode has. So everything from syntax highlighting, through autoimports and autocomplete, up to hovering over stuff to see the inferred types.

And that’s where frankly my curiosity gets me. I want to see where vim is at these days when it comes to integration with other tools.

Vim has a plugin system and a big, very involved community creating those plugins. Bare vim is very simple, but I want to see how far you can push vim these days. Is it really possible to transform this command line text editor into a fully-featured IDE? And if so, how difficult will that be?

I am curious about answers to those questions, so – apart from simply learning vim and writing in vim – I plan to invest significant time into researching and testing various plugins.

I am dying to see how the vim I am using now – just a few days into the challenge – will differ from the one I will use in one month.

5. I Want To See If The "Holy Grail" Is Real

Vim, as exotic and bizarre as it might seem, has a great promise.

It promises that – if you exert significant enough effort – in the end, it will make you faster and more productive than a regular text editor. It will transform you from a human being and make you one with the text you are writing and editing, to the point where you will not feel that there is a keyboard separating you.

It might take a long time, almost for sure more than 1 month. But in principle it’s possible – promises vim and its followers.

So I want to test that promise. Of course, as I just mentioned, reaching this "holy grail" proficiency might take a lot longer than 1 month.

But writing daily for 30 days straight should at least give me a glimpse of such mastery. It should at least convince me that it is possible.

And that’s probably what I am curious about the most. What is the answer? I’ll tell you in 30 days.

This article was republished by courtesy of our engineer Mateusz Podlasin! It was originally published on https://mpodlasin.com/articles/vim-challenge-kickoff. If you want to read more articles by him follow his Twitter. And if you want to join our team and work with engineers like Mateusz, check out our careers page and follow us on LinkedIn.