Resources I used to learn Neovim

Adam Drake
6 min readJan 22, 2024
Photo by https://www.pexels.com/@angelica-reyn-35454765/

As any aspiring developer worth his weight in salt, I knew one day I was going to have to learn how to use Vim. I remember the first time I interacted with the editor and how it chewed me up and spat me out like a stupid little boy who didn’t belong. I was totally disorientated and totally lost. I could hear the text editor almost mocking me… laughing in my face as my pathetic efforts to just try and write a few characters on the screen failed miserably.

I remember none of the usual keys working and me not even being able to get out of the editor for a good 20 mins.

I was following an article about how to edit a file on a server using Vim. I remember none of the usual keys working and me not even being able to get out of the editor for a good 20 mins. (This was in the days before ChatGPT!). I finally found the command :wq to be able to save and exit. I was left confused and humiliated.

WHAT THE HELL WAS THAT?!

Obviously for many years I was fearful to go near the editor again in case I pressed the wrong button and my whole codebase disappeared. But as I progressed as a develop I was required to do more and more work on the server so it became somewhat of a requirement for me to start interacting with the Vim editor more.

I learned about the h, j, k, l keys being used to move around (which introduced me to a whole new world of keyboard layouts) and then INSERT mode and VISUAL mode and everything I discovered was just completely at odds to what I have learned up to that point in standard editors (Sublime, VSCode, Atom).

It’s taken me a good 4 or 5 attempts at trying to use Vim as my editor of choice and I would still say it’s still not the editor I use 100% of the time. But perseverance pays off. Now it’s more like 70% and I feel like I have got over a hump. I wanted to share some of the super useful resources I have used over the years (sorry folks — this isn’t something you’re going to learn in an afternoon!) to learn how to use this beautiful, enigmatic, complex, frustrating (but ultimately amazing) text editor.

The Motivation

Over the years I have seen many developers on certain tutorials use the Vim Editor but it was one specific Youtuber Developer than really inspired me to look further into it- devaslife. He’s an indie app developer based in Osaka, Japan. He codes quite a bit in React and Typescript (which I also do) so I suddenly saw how Vim could be used not only for doing random tasks on the server but also in day to day Frontend development.

It looked so different to the version of Vim I had used in the Terminal that I had to double check it was even Vim.

The first thing that captured my attention was the minimalist layout of the editor he seemed to be using and also the color scheme. It looked so different to the version of Vim I had used in the Terminal that I had to double check it was even Vim. Turns out it was Neovim (which also took me some time to realise what it was) but it was still Vim, albeit a hyperextended vim-based text editor.

Secondly was the way he was coding. He was editing a file and then switching to another file, editing that, switching to another, hover windows were appearing, there was a side nav and everything he did was via the keyboard. I was questioning whether this was just clever video editing or whether this was a totally different approach to working with a text editor.

I was suitably intrigued and motivated to learn more…

The Spark

The thing with motivation is it is short lived. You come up against a tough enough hurdle and that motivation will soon fizzle out. Luckily enough for me though, I had recently signed up to Frontend masters because I had discovered a course — Vim Fundamentals Course on Frontend Masters.

As a developer you have to use tools and the text editor is one of your main tools. If you can use that quickly and efficiently then you can be more efficient and valuable as a developer.

The teacher in the course is who I currently believe to be the most vocal developer on the Web promoting Vim — The Primeagen (or maybe this is just the Youtube algorithm working it’s magic on me). This is a developer who works at Netflix (apparently but god knows how he has time with all the streaming he does as well as having 4 kids) and is very active on Twitch and Youtube.

I watched his course and was convinced even more by the arguments he provided for using Vim. The basic premise being that as a developer you have to use tools and the text editor is one of your main tools. If you can use that quickly and efficiently then you can be more efficient and valuable as a developer. And Vim gives you the greatest potential for efficiency.

The course was great for beginners. It leads you through the basics of using the editor — INSERT , VISUAL , NORMAL mode all explained, how to move around, some powerful keyboard shortcuts like dd to delete a whole line. e to navigate to end of next word, { & } to navigate up and down a file quickly. It really helped give me the fundamentals in Vim and Primeagen’s enthusiasm for the tool is really infectious.

I have realised that if you want to become at least competent with the Vim editor then you have to use it

The CheatSheet

Not the nicest website (sorry Serge!) but the cheatsheet is super useful — Vim Cheatsheet. I also love the charts he shared about the different learning curves for different editors…

Different learning curves for different editors

Other Useful Resources

There are some other places I have found useful resources so so I will share a few links below:

Neovim Reddit

Typecraft Youtube Channel

Adib Hanna Youtube Channel

Ultimately you have to use the thing

However, as useful and inspirational as these resources have been on the internet, in the end I have realised that if you want to become at least competent with the Vim editor then you have to use it. And you have to just accept that for a while you are going to be slower and you’re going to be frustrated and you’re going to look across at all your colleague on their fancy VSCode editors and you’re going to think to yourself — ‘Why am I using Vim again?’…

But remember the path to supreme efficiency is a lonely one… it is supposed to be hard and treacherous and frustrating… because it separates the wheat from the chaff. The sheep from the goats. The men from the boys. It tests even the keenest of developers to see if they have the nerve to stay on the true path rather than flee into the all too inviting arms of their beloved VSCode.

Conclusion

Let’s be clear. You don’t need to learn Vim. VSCode (as well as many others) is a great text editor and I see many well known developers sing it’s praises. However, I personally think there are many benefits from taking the time and effort to learn how to use it. For a start you’ll see a different approach in how to think about a file, how to get around it and manipulate the text within that file.

Vim is available across all systems and you will find it pretty much on any computer you will work on — locally or on the server. It gives you a deeper understanding I feel. For example, I have learned so much about LSP (Language Server Protocol) — I didn’t even know what this was prior to learning how to use Vim.

I hope the resources I have shared can be as useful to you as they have been to me. Good luck and remember — If you find a path with no obstacles, it probably doesn’t lead anywhere.

About me

I am a Frontend Developer working mainly with React and Typescript in my day to day professional life. I love exploring new tools and libraries and love the Javascript Ecosystem.

I like to write blog posts that share exciting new tools I’ve discovered, how-to articles and also the occasional opinion piece.

I live in Prague in the Czech Republic with my family.

Check out the original blog post on my blog.

--

--

Adam Drake

I'm a Frontend Developer and I write about all things Frontend Related - Think lightly of yourself and deeply of the world. Based in Prague, CZ