After reading the title you might think that: What on this green earth made you think that something from the stone ages is the future? Have my last two remaining braincells finally gotten the third place? There are so many helpful tools that makes your life easier both to learn and use.

Flow state, that is why. Once you see someone in the zone just coding away it just clicks. Now that might be because I have never seen anyone flying with “normal” IDEs. But I am biased and do not care.

WTF is flow state

I truly hope that even if you do not know what flow state is you have experienced it. For me flow state is a state of mind where you end up doing the same work atleast twice as fast. The full focus mode where you are in tune with the cpu itself, just thinking through possible solutions and implementing it. Its just you and the problem, nothing else.

Only problem is when you exit the flow state for whatever reason (you ran out of problems, somebody asked something, you get hungry, the list is endless) And it is not easy to get back into that state, maybe even that was the last/only time you could get into it that day/week. There are ways to make it easier for yourself to get into the “full focus mode” but its not garanteed.

Note: I will be using the “flow state” “in the zone” or “full focus (mode)” interchangeably in this rant

Why your environment matters

Why were you rambling about flow state and how is any of this related. Shh now, it will all make sense (hopefully) ,let me cook.

Once you are “in the zone” you want as little reason to get sucked out of it. And something to do with taking both of my hands from my keyboard and using the mouse with one hand just felt off. I have been comfortable with using CLI tools, once Lens went pay to use I started to use k9s.

Im not going to lie, learning k9s and finding things that you do not know is hard but once you do understand that something. No more scrolling up and down. Filtering (both by resource and regex), saving state to disk, editing, scaling all of it is just a behind one shortcut.

I do want to preface this with that I am no engineer, I havent been to the university, I do not know my data structures, algorithms are magic to me. I couldnt program anything without the help of examples, either provided by google or chatGPT (I use it to explain concepts to me not as something that writes code for me) So on my coding learning journey I watched a video by the dyslexic ex netflix programmer man (The Primeagen) where he mentioned that most people do not truly learn their coding environment. The place where most of the time is spent.

So I took that as a personal attack and desided to do something about it and soon I ended up at a crossroads. I could go two ways. Continue my road with VSCode with the VIM plugin or throw all of that experience away and learn something CLI based

VIM motions

Something that the Primeagen is repetedly telling people is that instead of going straight to vim, use VIM motions in your current editor instead. And I whole heartedly agree with it. Modifying your existing editor to work with VIM motions will help, it did for me.

VIM has been my default config editor for a while now, but all of that experience involved figuring out how to exit it and save some small change. Even with the prior experience it was not a love at first sight.

After the first week into the VIM Motions experiment there was an incident and I accidentally deleted half of the configuration that I was supposed to be fixing. To this day I do not understand how I ended up doing it but safe to say I wasnt going back any time soon. About 5 months later I decided to give it another try while allowing myself to disable the plugin if there is an active incident. The plugin was never disabled.

The something CLI based

But as you can guess from the title, I was not going to stick to just emulating vim. Taking a hard look at VSCode I saw that hacking VIM Motions to it might not be the best idea in the long run, specially since all of the features are atleast partly designed to be used with a mouse.

But why neovim? Honestly, the combination of sales work the Primeagen made and my coworker.

My experience so far

I started out using Tj`s kickstart to have a functional editor right from the start, for anyone else starting I highly recommend doing the same. The readme and the videos he has made explaining things are great and you should watch them aswell.

I did add tmux to the mix aswell, its just a program that transforms what a single terminal window can do. From saving terminal sessions to splitting your window into multiple little ones and/or different tabs.

What I initially configured is pretty much how I use it right now. I have 3 tabs

  1. First tab is split into two 70/30 split where the larger part is neovim and the smaller is still neovim but it has my documentation open
    • I might change that as I dont feel like I am using it enough but I do want to give it some more time
  2. Just a terminal window
    • Mostly what I do is run tests (Could probably do it within neovim aswell)
    • Run the actual program
    • git stuff
  3. k9s

Smol image of my main tab

This experiment was originally supposed to last only for one month (November) but since this is being written in mid December I can fairly confidently say that I will be sticking to this setup for a while.

It took me about half a month to understand and surpass the things I was doing within a single file (more on that later) with VSCode. Couple of interesting things, Shift from autosave to manual save (Could probably implement it somehow but it ended up not being a big deal) and the feeling of failure when touching the mouse went away.

The latter might be because touching the mouse meant that usually I failed with some sort of navigation.

The Good

  • Live grep across files
    • Is something that I do not think I can live without anymore.
    • It has been so handy for many situations, even in non work situations
  • VIM Motions
    • slowly learning the features has been so fun and I dont think I can work without it anymore
  • Customizability
    • I never thought its something I care about but the ease of adding/removing/modifying has been liberating even though I havent done it much
  • Jumping around
    • Go to definition (as the name says you can go to definitions, or even find references)
    • Markers (Jumping around files has been so useful)
  • Good feels
    • Learning and then actually using that technique or shortcut just feels great
  • Control
    • I feel more in control, while it is harder to get used to, once you are in the zone I do not get sucked out by the mouse

Markers

Using markers completely solved the issue of moving between files for me. (I might try out harpoon which expands on this feature)

There is a built in explorer where you can move between files. While you can use buffers to jump between files but it is very clunky (I used that method for a month for some reason :shrug:)

The bad

  • Icons
    • For some reason Icons within neovim do not work and I have no idea. It has not bothered me enough to fix
  • Diffing
    • Granted its not something that I have done alot so I am unsertain if its my own skill issue or something else
  • Git merge conflicts
    • I think I am missing some configuration or plugin because this straight up does not work. There are some plugins that fix that but I am not sure if those plugins have been installed already with kickstart and just misconfigured or simply missing.
  • Customizability
    • Some things that you want are not there out of the box so you have to dig around

What next?

For me, im going to stay a while and listen to what what my gut tells me. Its not perfect but I cant expect a perfect setup for something that I have only used for a month (and a half).

I could probably achieve a kind of similar setup with VSCode if I put enough time and effort into it. But that would deny me from using another infinity stone. Next to the “I use Linux btw” I can put “I use neovim btw”. Plus I know that there are so many things unknown unknowns that I am excited to find out and use.

But what about you?

If anything I would give yourself the time to learn your IDE, find out what you can do with it and how it can benefit you. Or just experiment with your workflow, no need to take the extreme angle of VIM and its many pros and cons.