Brandon beautifully explains why he loves VIM

Hi Chris and Mike,
I wanted to write in to respond to the boost that came in about Vim and Emacs in the most recent episode.

I'm a vim (neovim currently) user and have been using it for about 10 years now. For the first 5 years I'd used the editor itself casually, and with the vim controls for the Jetbrains/VSCode for my day job. I completely switched to Vim+Tmux 5 years ago, mostly triggered by reading the "Unix as IDE" series of blog posts.

It's next to impossible to communicate why I love my Vim setup in a way that can be communicated over a podcast. The reason I picked it up to start with was because I saw a video of someone performing incredible feats of text transform in Vim and it triggered a bit of a "I'm not going to stop until I learn to do this" kind of thing in me, I was so utterly impressed.

I guess the best way to describe Vim would be to explain it as a kind of language you "speak" to the text editor to edit text. You have a cursor somewhere in your text, and you use buttons on the keyboard to move that cursor around in relative and absolute ways, then perform changes to sections of the text. I don't think I can communicate any more details over this medium, so I recommend anyone curious to type vimtutor in their terminal for Vim's build in tutorial, and to try Vim Adventures, which is a game that teaches vim controls. It's something that you have to deliberately learn though, but I'd consider it one of the best decisions I made in my software career.

The controls are kind of the thing that people know about vim, and it's the part that's easily transferred to another text editor/IDE. So why would someone want to use the editor itself? Vim has it's own way of doing things that's different to a traditional IDE and you can't transfer your workflow over. But Vim lets you build a new one from scratch, provided you learn the basics of the editor. What I appreciate the most is the flexibility and speed, and the way I can modify the configuration to suit my own thought process. My vim config is like no one else's, because it represents exactly how I work and how I think. For example, I often have to travel through multiple layers of code to trace how something works, and I've been able to optimise my config and workflow to layout the code in a way that visually makes sense to me, move through it, then go back to where I was, before I forget was I was trying to do. Optimisations like that make easier for me to do my job quickly and efficiently and reduce the cognitive load I suffer day to day. I feel that with these tools, I can tackle bigger problems.

Just to explain one thing, vim out of the box is very primitive, but it's easy to add IDE capabilities like linting, formatting and debugging if you want that.

I guess the point is, while I can and have customised my VSCode setup to suit my tastes to some extent, it's limited in it's flexibility to whatever Microsoft felt that the average developer may want to do. Vim and it's ecosystem provides me the tools to make it my own. A Mac/Windows vs. Linux comparison would be familiar.

Anyway I hope this explains it, and I'm sure other listerners will explain their own experiences too.

Also, can't remmeber if this was Coder Radio or Linux Unplugged, but someone else wrote in about neovim + lua, asking for thoughts. Having attempted to write a vimscript plugin, I'll confidently say it's my least favourite language that I've touched in my whole career and neovim's move to lua is one of the best decisions they've made.

Cheers,
Brandon