The Revenge of Vimtutor: Actually Getting Good At Vim/Nvim
Anybody who knows me knows that I absolutely love Vim and NeoVim. Vim is one of the first programs that I install on any of my servers, pretty much all of my configs have basic vim key bindings added, if I'm not using a program that has them integrated by default. I mean, I'm literally typing this article out in NeoVim, what more is there to say? I'm far past the point of accepting a bloated VSC*de config and I despise having to settle with nano. I semi-recently got into NeoVim with NVChad as I went from the average Linux user who needed to edit config files to someone who strives to write code everyday and needed a fully functional IDE. I've messed around with a little bit of Lua (Brazil mentioned!) and eventually want to build my own NeoVim config, but for the meantime NVChad is a comfy little home for me to grow as a programmer and as a person. Way back when I got into Vim and was grinding through vimtutor (it was like 2 years ago lol) I was still relatively fresh to actually using the terminal at that point, I had used Ubuntu and Mint for a few years beforehand but was able to skate by without really learning anything beyond the absolute basics. This time I was determined to really learn the terminal. I had it set out in my mind that the terminal was a physical place and that I was moving there, I would have to learn to integrate because that's where I live now. It was a pretty amazing (although sometimes frustrating) experience, but I learned a LOT. Anyways, tangents aside, I used Vimtutor a little bit, I don't even think that I finished the whole thing and was like "ohhh boy, here I go Vim'ing!" I had my basic hjkl down, had my x, r, gg, G, 0, $, dd, :u, y and p game down, loved me some visual block with that ctrl-v, 5j, $, y, p or x, p. You know, real basic stuff. I picked up a few things when I needed it, like shift-> in vblock to tab giant chunks of code, but honestly I've just been working off of those intuitively for a hot minute now, and I know that I've barely scratched the surface of my IDE/editing/writing environment (I even have a line in my .zshrc to open manpages in nvim.) I feel like if I'm investing this much time into something and it influences the productivity of so many other aspects of my life on a daily basis, then I should get really good at that thing. So that leads into TODAY'S article, the Revenge of Vimtutor: NeoVim Edition. We're gonna complete this thing today, for Justic, and its gonna happen in NeoVim instead of vanilla Vim. Now, normally instead of typing vimtutor into your terminal to start Vimtutor, you would open nvim and run :Tutor to open tutor in NeoVim. But NVChad has the tutor plugin disabled by default, so you'll wanna go to your lazy.lua file in your .config/nvim/lua/configs directory and just dd that line out, ZZ, and launch that baby and it should work without a hitch. Now we can get started! Lets take some notes of the stuff that I come across that need to learn how to use, since I haven't gone through vimtutor in ages, and have a very ...specific? Vim workflow, which is mainly me using the knowledge that I have to blow through Al Sweigart's Big Book of Small Python projects for like the third time AS FAST AS POSSIBLE, which is straight up addictive how fun it is. And here I am, 400 lines in and I'm to where I'm guessing that I stopped back in the day, Lesson 3.3, ce. Now, I haven't used this really ever but after playing around with it for a few minutes, I see it's immediate use and definitely look forward into integrating it into my workflow.Honestly, the c key is pretty amazing, I'm having a lot of fun with commands such as 3cw and I can't wait to use them a lot more in the future. Now on to chapter 4! We're getting deeper and deeper into the Vim-sauce here, and I'm becoming more and more aware of how smooth brained and innefficient my current workflow really is. I was unaware that / and ? for search were even a thing, same with %. I feel like these are things that I should REALLY know by now, how can I even call myself a Vim user at this point? I've used :%s/foo/bar/g before a handful of times before, but it was always on the fly and I would Startpage it or ask ChatGPT how to do it, them prompty forget afterwards, so I know how powerful this one can be already but I still need to actually use it more. Another chapter complete, a lot learned, and on to chapter 5 we go. Starting off hot! or should I say :!, this one really blows my mind and I'm getting fun brain tickles thinking of possibilities. I was also completely unaware that you could :w to other files, which is great for making copies, and being able to combine it with vblock to write pieces to another file is icing on the cake. :r is a new one for me as well, but it's really cool and being able use it in conjunction with ! is awesome as well. So that wraps chapter 5, onward to chapter 6! Here we go, even more stuff that I should know that I don't yet! Exciting day! I will say that I DID know regular append mode was a thing, as I probably use it more than i in my regular workflow, and I'm very familiar with y and p, but I did NOT know about A, R, e, or o, which shame on me for that, seriously. Now here's a cool one, the :set option, which I could see being very useful with %s/g. We made it folks, Lesson 7, the final one. We've got about 100 lines of vimtutor left, so let's get this thing knocked out! And....there's not much here. How to access the help menu, making a config file, and tab completion for commands (which is pretty cool) but besides that, it looks like we're at a wrap. There's a few online resources at the end to check out, as well as a book recommendation, Modern Vim by Drew Neil, which I definitely plan on picking up at some point. So there you go, there's vimtutor by somebody who picked up Vim a few years ago and never even finished the tutorial. If you made this far, you're a champ and I wish you a great day!