Things Worth Learning

Neovim, with Jess Archer

Episode Summary

In this episode, Jess Archer, a full-stack developer, programmer at Laravel and podcaster, talks with us about her favorite text editor, Neovim. She explains what it is, how it works, how to install it and why she prefers it over Vim. We also discuss intentionally going outside of our comfort zones, and the importance of making that choice in order to grow.

Episode Notes

Episode Transcription

Matt Stauffer:
Hey, and welcome to Things Worth Learning. I'm your host, Matt Stauffer, and this is a show where a curious computer programmer, that's me, interviews fascinating people about their passions. Today, my guest is Jess Archer, a programmer at Laravel. Whoop, whoop. Jess, can you tell us a little bit about yourself, whether it's your personal or your professional life?

Jess Archer:
Hi, Matt. Yes, I am from Australia. I've got two kids, and at the moment, I'm really into archery, which kind of goes with my surname Archer.

Matt Stauffer:
Yes, but I did not know this. How long have you been into archery?

Jess Archer:
Only a couple of months. Probably not even that. I'm still on my probationary membership at the club.

Matt Stauffer:
Okay. I grew up in the country, so we had rifles. My dad would do deer hunting in the past. And then each of us, he would buy us, at some point... I don't think he would buy us. No, he'd buy us the materials to make a fishing rod, but he'd buy us a compound bow. And so we learned on one of the really simple recurve bows, where it just bends.
But then eventually, we got with the compound bows. For those of you all who haven't seen, they've got freaking little wheels and gadgets and gizmos all around them. And you look like you're in a predator movie or something. Are you working with compound bows right now?

Jess Archer:
No, I'm doing a recurve. So yeah, that's the one where it bends in, but then it bends out at the top. So it's not like a traditional bow where it's just a C shape.

Matt Stauffer:
Right.

Jess Archer:
It's more like a curvy S kind of shape.

Matt Stauffer:
Yeah. Yeah. Okay.

Jess Archer:
I wanted to do something... Start with something a bit more traditional and basic before I went to, like you say, the compound bows. They've got the cams.

Matt Stauffer:
Yes, cams. That's what they're called.

Jess Archer:
They give you all this mechanical advantage, where you pull it back, and you don't have to hold the whole weight of the draw.

Matt Stauffer:
I have not thought about this-

Jess Archer:
There a while.

Matt Stauffer:
... since I was in high school. And there's now things that I probably understand now that I didn't then. I wouldn't have thought of what you said about not holding the whole weight of the draw until now my brain understands what the point of the cam. Back then, I was like, "It's cool." It's got little wheels on it.

Jess Archer:
Yeah. Yep.

Matt Stauffer:
So that's awesome. Okay. So Jess Archer is into archery. I love this. It is so fitting. Was there anything else you're going to say about yourself before I interrupted you? Or is that... Are you pretty good?

Jess Archer:
No, that's pretty good.

Matt Stauffer:
Okay, cool.

Jess Archer:
I mean, I could talk for a while, but.

Matt Stauffer:
Yeah, no, that's fine.

Jess Archer:
Yeah. Let's get to the topic.

Matt Stauffer:
And the real quick, the reason that I did the whoop is because Jess is a wonderful human being and programmer and speaker and friend and all kind of stuff who recently started working for Laravel, which is in our segment of the industry is sort of the dream for a lot of people. Because a lot of us write Laravel code every day. But to work for Laravel, with Laravel, means her daily work is doing this incredible stuff in the ecosystem that we all live in, breathe in, every single day. So I just wanted to say again, congratulations, it's an amazing accomplishment. Completely well-deserved and good on you.

Jess Archer:
Thank you. I've been watching a lot of cooking shows recently, and they have these professional chefs, and they have to cook meals for their heroes and idols.

Matt Stauffer:
Oh, Lord.

Jess Archer:
And they're completely blown away by it. And I saw a lot of parallels there, where-

Matt Stauffer:
Interesting.

Jess Archer:
... I'm writing code, that's getting reviewed by Taylor every day.

Matt Stauffer:
Right.

Jess Archer:
And I feel like I've kind of reached that level, where they are in the cooking industry, but in the programming industry.

Matt Stauffer:
I love that. I also think that there's an element of you're both doing that, but also it's in their world, their favorite chefs are eating their food or whatever. But your favorite chef just hired you as a sous chef, right?

Jess Archer:
Yeah.

Matt Stauffer:
That's some next level stuff!

Jess Archer:
Yes, basically.

Matt Stauffer:
That's awesome. Not saying it's your favorite, but I'm just saying, whatever in that analogy. I love it. Well, congratulations again. Well-deserved. I know that's what we're talking about today.

Jess Archer:
Thank you.

Matt Stauffer:
So, moving on to our first question of the day. Do you have any life mantra or phrase or idea that you try to live your life by?

Jess Archer:
Yeah, I think it is changing, but. Originally, and probably what I've been living by for the last few years, is to always be trying to step out of my comfort zone.

Matt Stauffer:
Okay.

Jess Archer:
So always doing things that scare me a little bit, make me nervous because that's how I grow. So.

Matt Stauffer:
I love that.

Jess Archer:
Taking jobs, for example, that I feel, that I'm like, I have a lot of doubt. Like, "Can I actually do this job? Am I the right person for this?" But taking those things. Going on podcast, doing talks. All these things that scare me. And even after doing many podcasts now, I still get nervous when I do them. But saying yes to those things has always made my life better. It's given me more exposure and opened up more opportunities. There is a limit, though. Sometimes if you say yes to too many things, you end up being completely overwhelmed and stressed out. So it's finding that balance.

Matt Stauffer:
I love that. And it's interesting because I'm 37, and I co-own a successful software consultancy. So I've spent a lot of my early years really unsettled where I was, I had ADHD. I wasn't really in a great industry. And then now, I've built this really wonderful environment around me. And just within the last couple weeks I've been, I'm flipping everything on its head. And going back to some old things that I haven't done in ages that are a little difficult, and doing some new things that I kind of don't want to do.
But I think this is the best thing to have, the even bigger and better future of Titan. And it's scary, and it's uncomfortable because I was really easily settled where I was. But it's also like, "Oh, this is what it's going to take. This is the next thing." And I'm already starting to see some fruit from it. But even then, just the feeling like trying a new thing and not getting stuck where I was. So I hadn't named it that way until you just said that. So once again, thank you for my therapy session. That's how this podcast works out for me. But thank you. That's a really helpful way to think about.

Jess Archer:
You're very welcome.

Matt Stauffer:
So you know this podcast is actually about one thing, which is not my therapy. But today we're going to talk about one thing you're passionate about. Can you tell us what we're talking about today?

Jess Archer:
So today I would like to talk about Neovim, and I realize that we are not dealing with an entirely technical audience. It is a tool that technical people use, but other people use it, such as writers and all sorts of stuff. So Neovim is a text editor, which doesn't sound super exciting.

Matt Stauffer:
Right.

Jess Archer:
But it has a whole lot of philosophies and methodologies behind it that make it different than basically every other text editor.

Matt Stauffer:
Okay.

Jess Archer:
The other thing to say about Neovim is it's not the first Vim.

Matt Stauffer:
Okay.

Jess Archer:
So Neovim is a fork of... And a fork is basically where you take an open source code base and copy it. So Neovim is a fork of something called Vim, and Vim is a fork of something called Vi. So it's gone down this chain. I think Vi was originally from the '70s. So I like to say, "I'm basically using a text editor from the '70s-

Matt Stauffer:
I love that.

Jess Archer:
... in 2022, and it's still awesome."

Matt Stauffer:
That's great. So I have so many questions from my view, but I also want to make sure we get it to from the vantage point to people who aren't familiar. So I use Vim somewhat regularly. So for those of you who have never heard of it, I'm going to do my best to try and make this make sense for you. Vi and Vim were text editors, and I bet we can talk about in a second, what is their way of thinking that continues into Neovim.
But one of the things that I think, just thinking about when someone imagines a text editor, I think they often imagine Notes or Pages or Microsoft Word or something like that. Where it's this graphical interface in Windows or in Mac or something like that. But Vi and Vim, when you're using those, you're on a terminal, right? So you're actually on green letters and a black background looking like you're a hacker, right?

Jess Archer:
Yes, exactly.

Matt Stauffer:
Is Neovim that same way, too? Or is Neovim actually more like a graphical interface kind of situation?

Jess Archer:
So Neovim is primarily a terminal-based editor. It has been designed in such a way that they can incorporate it into graphical tools.

Matt Stauffer:
Okay.

Jess Archer:
So one of its goals is to allow it to be incorporated into full IDs, which are basically a text editor with a lot of programming tools backed into it as well.

Matt Stauffer:
Got it. Okay.

Jess Archer:
So, yeah.

Matt Stauffer:
And Vim has not been built that way. So one of the things that people would often do is they would try to make the keyboard shortcuts you can use in Vim, work in your other tools, but it wasn't actually Vim.

Jess Archer:
Yes.

Matt Stauffer:
So in Neovim, they're actually able to put Neovim in the ID itself?

Jess Archer:
Yes.

Matt Stauffer:
Wow.

Jess Archer:
An actual instance of it. I've had Neovim set up in my browser. So anytime you're typing in a text box in a browser-

Matt Stauffer:
You use it.

Jess Archer:
It would actually insert-

Matt Stauffer:
Wow.

Jess Archer:
... a Neovim instance in there.

Matt Stauffer:
Okay. That's amazing obviously-

Jess Archer:
Because once you start using it, and we'll talk about why I love using it, but once you start using it, you want to use it everywhere. It's fundamentally different than any other way of editing text.

Matt Stauffer:
So, and that's where I want to get to. So real quick for context, if somebody wants to imagine in your mind what we're talking about. Like I said, imagine that you've got a hacker, or one of the two of us sitting here, and we've got our website up in one half of our screen, it's probably a very large screen because computer programmers. And then the other side of our screen, instead of what you might imagine, which is a very modern-looking code editor.
One of the things we often do is we actually have this, again, this green on black or this white on black, nerdy-looking thing. And instead of editing our files with clicking and dragging, we're literally, editing our files by opening something up in that green on black view that you see hackers do, we call that the terminal, and it's the most direct way for most humans to access computer.
Unless you write machine code, if you're accessing a computer at its most core level, you're opening up that little thing, and you're typing at a specific set of command. So there's no mouse usage basically. And one of the commands you can say is, "Open up this file that I'm looking at in Vi or Vim or Neovim." So just, if you're imagining how nerdy we are, that's what it looks like.
But the ideologies we're going to talk about today translate outside of that very nerdy context. And I think that's one of the reasons why Jess is-

Jess Archer:
Yes.

Matt Stauffer:
... talking about this here. So especially if you've heard of Vim before, I want to speak to you the most, we're not just talking about nerds in terminals. So while I do want everybody else to hear that is the founding places, nerds and terminals, these ways of thinking about it are not things that are about nerds and are not things about terminals. They're about a different way of using a keyboard to interact with text. And I feel like that's what's most interesting. Right? So-

Jess Archer:
100%.

Matt Stauffer:
Can you talk to... And I assume that Neovim has most of the same or the similar kind of key bindings and movements that Vim does. Right? So we can just talk about how it works across all of them?

Jess Archer:
Yes.

Matt Stauffer:
Okay. So can you-

Jess Archer:
Absolutely.

Matt Stauffer:
For somebody who doesn't understand, in what way could any text editor interact differently with the keyboard than any other text editor? How do you even begin describing that to someone? What does it look like?

Jess Archer:
So real quick, just to back up real, real quick.

Matt Stauffer:
Yeah, of course.

Jess Archer:
The whole green text on the terminal thing, that's definitely the way most people think about that style of thing. It's the best way to explain to people to get them in the right frame of mind. But just for reference, when you've configured Neovim and, or Vim and all that, you normally have themes and everything. And you set up your terminal in such a way that it actually doesn't look too much, like it's running in a terminal. It almost feels like it's a full application. You've got all the colors, all the things. Yeah. So.

Matt Stauffer:
You've got little arrows and boxes and stuff like that, so. And that's a great point.

Jess Archer:
You can have split windows. So it'll cut the window in half and have two things on each side. It basically looks and feels like it's a graphical user interface tool.

Matt Stauffer:
Yeah, for sure. All right.

Jess Archer:
So in terms of editing with Vim, when you first open it, and a lot of people run into this, they first open with a file, and they go to start typing like you would in any other editor. And they're surprised, frustrated, annoyed, when even nothing happens, or even worse, random things happen. Text gets deleted or moved or all this sort of stuff. And so the reason for this is the reason why I love Neovim, and that's because it's a modal text editor.

Matt Stauffer:
Okay.

Jess Archer:
And what that basically means is that it runs in a bunch of different modes, and the default mode is called normal mode. And when you're in normal mode, typing letters on the keyboard, doesn't actually translate to text entering on your screen. In normal mode, every key on your keyboard can do a command or a function or do something to manipulate the text.
So, in most editors, when you open up, you can just start typing straight away. But when you want to do an operation on the text, you can't really use all the keys on the keyboard to do that. You've got to hold Control and Shift. And then one of those keys to basically tell the editor, "Right now, when I'm doing this, I'm not actually wanting to type this thing. I want to issue some sort of command. I want to change this text," or something along those lines. So what makes Neovim and Vim and Vi so much different is that this concept of modal editing and the default mode being normal mode.
Where if I want to change some text, for example, let's say, I've got my cursor in the middle of a word, and I want to change the entirety of that word to something else. I can type C, I, W, which basically is a change inside word and then type a new word. And it doesn't matter where my cursor is inside that word, because the next part about Vim is it has this concept of text objects. So everything inside the document you're working on has a way of describing it. So you've got things like words. You've got sentences. You've got stuff inside quotes. Stuff inside brackets. And so you can use those text objects to tell Vim what change you want to make to that text object.
So you can delete a word. You can delete everything inside quotes. You can change double quotes to single quotes without having to manually go to the start, backspace that, type another one, go to the end, backspace that, type the other one. You can have your cursor anywhere inside that. And just issue a command to say, "Change the surrounding quotes from this to this." And at its heart, that's why I love it. Vim gives you almost this language for talking to your text editor and saying, "Do this operation."

Matt Stauffer:
I love that.

Jess Archer:
You're not thinking, "I need to manually move these keys over here and do this." You're just saying to Vim, "I want to change this to this."

Matt Stauffer:
I love that.

Jess Archer:
"I want to delete this."

Matt Stauffer:
It's so interesting because it's such a different way of thinking that it's hard to even describe to people how different it is, or why it's beneficial. Because we just think, every time I use a keyboard, anywhere in my computer, outside of Vim, it's always going to work the same way. I press a button, and that button is now the thing that is on the text in front of me. And if I want to get rid of it, I press the backspace button. And maybe if you're a little bit more advanced of a user, you might hit Control A or Command A. That selects all of them and then Delete or maybe Shift left or Shift right. And it selects part of a word. So there's these only power users really know about this.
So, for example, I'm trying to give an example that anybody would recognize. But, let's say, you're typing a really long URL into your browser, and you're like, "Oh, no, I mistyped the first letter of this 20-letter long URL." Or you want to delete everything back to a certain point. Or you want to go back to a certain point and make a typo change. What you're probably going to do is reach down, grab your mouse, move your mouse up, get it to the spot you want, click. "Oh, crap. Wasn't quite the right spot."
You click over to a different spot, a little bit. You start typing, and then you take your mouse, and you click down at the end, and then you're going to do it, the thing at the end. And we're even just talking about simple navigation, right? So if you were-

Jess Archer:
Yeah.

Matt Stauffer:
... we're not even talking about any of the more complex stuff, but because you mentioned this, using this kind of mode outside of just text editing, if you were in a place where you had just written a long thing in Neovim or Vim or Vi, and you wanted to navigate to somewhere else, can you tell me a little bit about what the navigation story is like to help people understand? In what way am I moving through the objects? You're moving through words, moving through sentences, moving through paragraphs differently in Vim. That allows me to do different stuff.

Jess Archer:
Let's start by saying that first, when we are editing code, and we're writing code. And even when we're writing long-form text, a lot of the time we're actually editing text rather than writing it. We spend more time editing than we do actually writing the thing. So having something that's optimized for editing is super, super important.
And one analogy that I've heard about Vim that I love, I can't remember where I heard it. But if you imagine a painter, when they're doing their painting on a canvas, when they've got their paint brush touching the canvas, that's kind of like insert mode. That's when you're putting stuff on the page.
But the majority of the time, the painter that has their paint brush off the canvas, and that's kind of like normal mode. And that's where you are moving around and changing paints and grabbing different tools and all this sort of stuff. And then you go back into insert mode briefly to put it on there, but you always come straight back out of it.
So, with Vim, you're mostly in normal mode. You type something, but instinctively, the second you finished typing the thing you want to type, you push escape to get back into normal mode because that's where you can do stuff.
And so you talked about movement. And in modern Vim and Neovim, you can use the mouse. But as you mentioned, it's can be pretty slow to reach down, pick it up, move it around. And it can be a bit imprecise with the targets of where you want to hit. And for average people using a computer, that's not going to add up to too much time.
But if you're spending your entire day writing and editing, those optimizations add up. And not only do they add up in time, but they also help not break your flow. So when you are writing something, and you make a mistake, you've got to switch from, "I was trying to solve this thing, build this thing," to, "I've got to go and fix that mistake." And so the more you can do to make that, those little fixing of mistakes and that easier, the more you can stay in your flow.

Matt Stauffer:
I love that.

Jess Archer:
So moving around in Neovim, you can use the arrow keys, but on most keyboards, the arrow keys are further down and to the right. And even that is too much for most Vim users.
So the default movement keys, the default arrow keys, in Vim are actually H, J, K, L. And if you have a keyboard in front of you, you'll notice that they're right in the middle of the keyboard on your right-hand side, it's kind of where your hand naturally rests, so. And normally if you type H, J, K, L, in a normal text, you'll type the letters. H, J, K, L.
But in Vim and Neovim, because you're not in... Like when you're in normal mode, those keys are actually left up, down right. Now, Vim users take that one step further, though. And using H, J, K, L, is actually generally not advised unless you actually only need to move a couple of characters. But if you want to move by words, you've got different keys that will move you word-wise.
So you can push W, and it'll jump to each word in a sentence and B to go backwards. And if you're at the start of the word, you can push a key. I think, E, that takes you to the end of the word. So you try and actually avoid using the arrow cursors, the H, J, K, L, unless you actually want to go one or two characters left or right.

Matt Stauffer:
And I love, it's a great description of it because I was jumping ahead a little bit. But one of the things that's really cool about it is when you're thinking about what you need to do. First of all, if you imagine hitting the left arrow key a bunch of times to get back to that mistake that you were typing, the URL that I was talking about. First of all, that's slow. But second of all, you're not really... Our brain understands things in chunks that the traditional keyboard doesn't give us access to. We can't say, "Word", or we can't say, "Segments of a URL that are separated by slashes." We can't say, "Things within quotes or paragraphs," or, "Things within braces or parentheses." Whereas, we actually get access to some of these things that are more than just one character.
And I think that's the biggest thing for me when we're talking about movement in Vim, and Neovim, is movement on a traditional keyboard is left, a character, right, a character, up, a character, down, a character, meaning up and down the line. Everything is by the one character and the likelihood that we ever actually want to move, just one character, left, right, up, or down, when we're doing something is extremely low.
It's almost always go back a word, go back three URL segments, go up two lines, go back two paragraphs, or do within these two slashes or within these whatever. And those are ideas that all are things that exist within Vim. So I don't even know where to ask you to go next.
I mean, you talked a little bit about the really basic movements, words forward, and backwards. You talked about going up and down a line or left and right a character. Where do you go from there? Have you had to explain to people before how to begin wrapping their brains around movement and selection and all kind of stuff and the grammar?

Jess Archer:
Yeah. So I like to break some of the components of Vim down into three main categories. So we've got text objects, which represent a word, for example. So if your cursor is in the middle of the word, you can refer to that word, no matter where you're in it. But other than text objects, you've also got motions. And motions are more about movement. So that's when you are, say, you're in the middle of a word, and you just push E to go to the end of the word. Or the example of moving backwards and forwards, words using like W and B. So text objects and motions are kind of similar, but they refer to slightly different concepts.

Matt Stauffer:
Okay.

Jess Archer:
But you can combine those with commands. So I mentioned, rather at the start, like C, I, W to change inside a word. If I go just C, W, that will just change to the end of the word. So it's applying the C command, the change command, to the W motion, whereas I, W is a text object. So you can kind of use them similar, but you'll get different results, depending on where your cursor is, whether you're using motion or text object.

Matt Stauffer:
Okay. That makes sense. And so, let's step away from change for a second because I think that can be confusing at times. So let's talk about delete. So if you were-

Jess Archer:
Delete, yep.

Matt Stauffer:
... in a traditional editing scenario, and you wanted to delete a word, you would probably go to that word, and you'd click on the end of the word and drag to the beginning of the word, and then Delete, or you'd click on the end of the beginning and just hit Delete enough times to get it right. And so one of the things that you-

Jess Archer:
Yeah, I mean, you can have, maybe I think you can push Alt or something, can Shift, and then you can navigate word-wise, I think, in a lot of editors.

Matt Stauffer:
Yeah. And that's usually the only movement that you actually get for free in most editors, is holding, maybe, oh, yeah, Alt, I was going to say, Option. Option, and Shift, and then you go left and right. So, but we get a lot more when we're in Vim because, let's say we're deleting. Deleting is a command that you're talking about. Right? So we want to delete-

Jess Archer:
Yeah.

Matt Stauffer:
... but what you're doing with Vim is, or in Neovim, is you're saying, "Okay, but what do I delete? Do I delete a thing? Do I delete to another thing? Do I delete back to another thing?"

Jess Archer:
Yeah.

Matt Stauffer:
So whenever you say, delete, like the Delete key, it's not going to do anything until you give it the target. Right? And so what you're telling us is-

Jess Archer:
Exactly.

Matt Stauffer:
... we can say, "Delete an object." One of the objects you talked about was inside of a word. So the whole word basically. But you can also delete in a movement, delete until the end of the line. Delete until the next word. Delete back to the previous word. And so you're telling it, the verb is delete, and then the object of the verb is whatever to delete to or what to delete. Is that what you're saying about that? The difference between the object, is the object is what to delete, and the movement is where to delete until. Right?

Jess Archer:
Exactly. And you can use commands with either of those two things. So you can delete with a motion or delete a text object.

Matt Stauffer:
Right. And then there's a lot of other objects or a lot of other commands that you can do. So you mentioned change. So I know that we don't want to go through all of them, but what's the difference between change and delete?

Jess Archer:
Not a whole lot, but again, it's an optimization. So when you delete, you're in normal mode, when you're issuing this command. When you delete, it removes the word, but it leaves you in normal mode. So you can then just go and move to wherever else you want to go. The only difference with change is that it will delete the word, but it'll put you in insert mode automatically.
And there's some other little nuances to this as well. So if I delete a word, it's going to remove the word and the extra space so that you don't end up with two spaces, because there was a space before and after the word, it doesn't just delete the word. It's going to delete the word and one of the spaces. But if you change it, it leaves that space there, because it knows that you're changing this word, and there's going to be a new word here. So leave the space at the start and the end of it.

Matt Stauffer:
Okay.

Jess Archer:
So there's little subtle things like that. But once you get used to them. And one of the things with Vim is it is very overwhelming to get started with, because you have to internalize all these things. And it has a very steep learning curve. But for me, it has more than paid-off, learning all these things, because now it's just, anytime I do a screencast about something that's not Vim, but I'm using Vim. All the comments are like all just blown away about how quickly I can edit text and move around. And it's like, my cursor is here, but somehow it changed something over there. And it's like, "How did you do that?"

Matt Stauffer:
I love that. And there's so many things, I mean, I know that I'm just going back to the same thing. But there's so many ways in which the way our brains process the content we're working with, Vim has analogies. That's not right. But basically has a parallel to that in a way that a traditional text editor doesn't.
So you've already mentioned a bunch of them, everything within the parentheses, everything within the quotes or changing out the quotes. Good luck saying in a traditional editor, "I want to change out all the simple, single quotes within these three lines to double quotes." That's just not going to happen. And some text editors make these a little bit easier with multi-select. So nerds you'll understand, we have that in the blind text and codes and stuff like that. But there's just a level of, I mean, it's grammar, it's syntax.
You're literally telling your text editor, you're building sentences to it. And the sentences are things like, "Within lines three to 17, only if those lines don't contain the word duck, make sure that every single time that the word foul is used there, it's changed to spell F-O-W L instead of F-O-U-L, Enter." And then it just does it for all of them.

Jess Archer:
It just does it.

Matt Stauffer:
And then you can do that, again, really quickly with little modifications. It's just, there's so much freaking stuff you can do. So again, how do you tell people what else to do from here?

Jess Archer:
You touched on a good one there, which is the repeat command, which is just dot, it's just the dot on your keyboard. And the thing I love about that, say, I want to, I don't know, change a word somewhere to something else. So keep using the change example, but. That could be a really short word that you're changing, and you change it to a really long word. You can move the cursor then to another word. It doesn't have to be the same word, but when you push dot, it issues the same command. So it's going to change that word to that other word you used.
So you can just keep hitting dot then, instead of retyping that thing all over again. And changes you make in Neovim are like, we call them atomic changes. They're very descriptive, little discreet changes that do something. And so being able to repeat these atomic changes is really good. It's not like when I push the document, it's going to type the last letter I typed.

Matt Stauffer:
Right.

Jess Archer:
It kind of knows that I issued a command, and that's the thing it's going to repeat. And some of the other examples, you can delete until the next occurrence of a particular letter, or change until the next occurrence of a particular letter. And there's even nuances within that. So I can say delete up until this particular letter, or I can say delete including that letter.
And that's just a difference between D, F and then the letter. So delete, find that, and that will remove that letter as well. Or D, T, and then that letter, and I always think that one is like till, like short for until. Delete until.
And so you end up with all these little pneumonics of what all the commands mean. And most of them have something that let you latch onto it. Like the change command being C.

Matt Stauffer:
Right.

Jess Archer:
Delete being D. And then the text objects have these little ways of describing them. Like I, W is inside word, and there's A, W, which is around a word. And those have subtle differences with the spaces. And if you're doing it with, say, quotes or parenthesis, you can say, "Delete inside the parenthesis," or, "Delete around the parenthesis," which will delete them, the parenthesis themselves, as well. And all those little micro things, you might not think, "Oh, why does that matter? Having that small little optimization?"

Matt Stauffer:
Right.

Jess Archer:
But again, it comes down to, I just see the thing I want to change, and I know what I want to change it to. And half the time, I don't even remember what the commands are.

Matt Stauffer:
Your fingers just do it.

Jess Archer:
If someone asks me something, I have to look at my hands and do it because it's all muscle memory. My brain just thinks, "I want to get rid of that." And my hands just do it automatically.

Matt Stauffer:
I love that.

Jess Archer:
And once you get to that point, past the initial learning curve, where you're having to really consciously think about it, once you get to the point where it's all muscle memory, that's when, to me, the magic happens.

Matt Stauffer:
And it's so funny because as you've been talking through these things, my brain is actually replaying. And I'm not a full-time Vim user. So I couldn't match up with you at all. But I've used it on and off for decades at this point. Enough, where you'll say something, and I'm replaying in my head like, "Oh, to do that, I would be 4, D, D, 2, J, P, and I'm just thinking through these things. But I'm having to name in my brain, what would that actually be commanded? Because it's just, my fingers are like, "Oh yeah, that's what I would do."
And it's really fun that you get into these rhythms where your brain translates something to that grammar because you're familiar with it. And then it types the grammar and then the computer does the grammar. And so there's just so many little optimizations there versus always doing the same thing, which is click with the mouse, hit the back button or hit the arrow button a bunch of times. And so I think one of the things, the biggest criticisms I have of non-Vim world, which makes me love the Vim world, is there's really just a few operations in the normal editor word, up, down, left, right. Maybe you're really advanced, and you're doing the Alt Shift and the Alt left and Alt right. And nobody uses the page up and page down buttons or anything like that. Right? So.

Jess Archer:
Yeah.

Matt Stauffer:
There's only a couple things you can do, and you do have a Delete key, which is similar to the Delete key, or the change thing in Vim. But there's just no matter what you're doing in normal text editing, you have a few things to work with. And Vim and Neovim give you this incredibly expansive set of tools, which does make onboarding kind of overwhelming at times. But at the same time, once you learn them.
It's sort of like, I often talk to people who are like, "Why do you use such big words sometimes?" And I'm like, "Well, because that's the right word for the scenario."

Jess Archer:
Yes.

Matt Stauffer:
So we can either reuse these same simple words for a million different scenarios and have no nuance, or just know the big SAT word, because that is the appropriate fit for this. So I love people who have big vocabularies, not because there's anything wrong with not having one, but because it gives the ability to express the thing more, particularly, and specifically and succinctly. Right? And I think of Vim is sort-

Jess Archer:
Yeah.

Matt Stauffer:
...of the same thing. It's a much bigger dictionary of things you can possibly do. So you have to learn more commands, movements, all that kind of stuff. But once you do, you can so succinctly say, go from, my brain says, "Delete paragraph. Delete to the end of paragraph. Change everything inside the single quotes. Change all the single simple quotes." You can go so quickly from that idea to that implementation that, like you said, when people are watching you do it looks like magic.
And a lot of us who love Vim and Neovim fell in love with it by watching somebody else who used it.

Jess Archer:
Yes.

Matt Stauffer:
Whether it's the execute code guy or anybody else, we're like, "Whatever that is, I want it, and it's worth whatever it takes." So what made you get into it originally?

Jess Archer:
Exactly what you said. I can't remember when, because I started using it when I was a teenager, which is quite a long time ago now, but I just saw people using it. And back then, I was getting really into Linux and all this server stuff, but I was using a text editor called Nano and Pico and all those. And they're another terminal-based one, but they don't have modes or anything like that. They're much more like a traditional editor. But probably have less than a traditional editor. You can basically backspace, type stuff and then save the file. And that's about it. You can search.
But seeing people use Vim was what made me go, "Yeah. I need that in my life." And as new editors have come out, especially code-related ones, VS Code, PhpStorm, all these sorts of things. I always look at them, and I'm always like, "Oh, that's got some really cool features I want." And as you said earlier, some of them have Vim mode, where they'll give you some of those. They'll kind of try and make it a Vim model. So you can use a lot of the things from Vim. But I've never found one that actually truly implements it in the way that Vim does. It always feels a little bit broken. You'll go and reach for something, and it doesn't quite work.
One of the other things is, with Vim, it's very, very extensible. There's tons and tons of plugins for it. You can kind of write your own for it. And there's some plugins that to me are essential in Vim, that if I don't have them, they're ones that feel like they should be there because they honor that, the same sort of style of thing. And a lot of the Vim modes don't have those plugins.

Matt Stauffer:
Okay.

Jess Archer:
And those, to me, are essential. And some of them might add more text objects, for example. So, if you're working with HTML, and you've got the little attributes on the HTML tags, you can add text objects for those.

Matt Stauffer:
Oh, cool. I didn't know that.

Jess Archer:
So you can very quickly just delete one of those attributes. So you can, depending on what you're working with, you can add more things to it. Obviously, it comes with a lot of them out of the box.

Matt Stauffer:
Right.

Jess Archer:
And I try and use Vim for writing emails, everything, not just for code. That's one of the things I want to stress is that I use Vim for everything I'm writing. Because it makes it so much easier to then go and edit things, which is what I'm doing all the time. And it already comes with all the things out of the box. It's got text objects for paragraphs and all those sorts of things built into it.

Matt Stauffer:
I wrote my book in a syntax that looks very much like Markdowns. The programmers will be familiar. But those of you aren't programmers, Markdown is a very kind of programmer-focused coding, or it's as if you were to use the ability to do bold and underlying, stuff like that. But instead of seeing it, you're doing little tiny code markup in the things.
So I wrote my book in something like that. And I wrote the whole thing in sublime text with Vim bindings on. And now you're making me challenge that when I do the update to my book, can I actually go do the whole thing in Vim? And I'm not sure because again, I'm not as accomplished of a Vim user as you are.
But I have found that there's many, many, many circumstances around my computer where I'm doing some kind of text manipulation and URLs are one of them, writing stuff in the terminal, writing, where I'm just like, "Oh, this would be a lot faster to get from here to there, or to change just this." And then you just get spoiled by it. Right? I'm like, "Oh, now I have to-

Jess Archer:
Yeah.

Matt Stauffer:
... do whatever to get the whole way to the beginning of the line or whatever else it ends up being." So it makes sense when you get into it, that you want it everywhere.
But I want to ask you if somebody hears this, and they're like, "All right, I'm ready. I'm ready to try it." Let's start for programmers. Because, obviously, it's an easier intro for programmers. So if someone's a programmer, and they're like, "I'm ready to try Neovim. I'm ready to learn this." How do they get Neovim set up? How do they get the optimal setup? Because lot of times it's like, it's do you want to use base Neovim? Or do you want to use it with all the best plug-ins? Do you copy somebody else's, Vimrc file, or whatever it's called? Or do you do your own? And then how do they get it? How do they get it set up? And then how do they learn it? What's the first steps for a programmer who wants to get into that?

Jess Archer:
Sure. So installing, it's going to depend on your operating system, whether you're on Mac or Windows or Linux. But if you go to the Neovim website or the Vim website, it'll kind of help you out.

Matt Stauffer:
Okay.

Jess Archer:
Interestingly, Vim tends to come with... I think Vim comes out of the box on Mac. And on most Linux systems. And Neovim, being a more modern fork, doesn't come out of the box. But if you go to their website, they've got all different ways of installing it for different operating systems.
Remembering that you're running it in a terminal. So when you're on that command line, where you've got that little prompt that's like "Type some things." Maybe some people might be familiar with doing DIR or LS, to list the contents of a directory. That's where you would type Vim or nVim or whatever it is to open up your Vim flavor of choice. In terms of customizations and all that, generally people strongly discourage, and I am one of them, just copying someone else's config for Vim.

Matt Stauffer:
Amen. Thank you for saying that.

Jess Archer:
It's one of those things that's very, very personal. It's very deeply personal. I also, I like people to learn the foundations of it and find where they're hitting areas that they don't like about it, because that's part of using Vim. It's like, the craftsman that's got all the tools, keeping them sharp, choosing the right ones, maybe modifying the handle to make it more comfortable.
To me, configuring Vim, feels like that. You're modifying and making this tool better so that it can do its job better. So I would just use it as it is. Maybe put a theme on it or something if because the default ones can be pretty, pretty bad.
And in terms of learning it, I think the best and most easiest resource is called vimtutor, and it's literally comes with Vim. So you can just type on your command line, "vimtutor," and all it does is open a text file. And it's got instructions in there, and it has you make changes to this text file.
It's the most simple tutorial ever because it's literally just a text file that you open. And it has some example text. And it's like, "All right, go down and change the occurrences of this, to this." And these are the commands that are the most efficient way of doing that." And you just run through that. And then probably run through it again.

Matt Stauffer:
Yes.

Jess Archer:
Until you've start to like... And that's a good way of getting a feel for what it's like to use Vim. And obviously you'll be like, "Oh, this is hard to remember all these things," but you'll at least get a day in the life experience almost of what it's like.
And as I said, you'll start to maybe find some things that it doesn't do or annoyed you about. I would always encourage people to try and see if something can be done natively in Vim before you reach for a plugin. Because if you just keep bolting on plugins, you'll end up with a much more heavy setup and some things might conflict and not work the way you expect. And it also means when you go and use Vim somewhere else, maybe you're on a server somewhere or that if it's not exactly right, you won't know how to use it. So I try and use the defaults as much as possible. And just add onto that. Rather than going, "I don't like the movement keys being H, J, K, L. I'm going to bind them to as A, S, D, F." Strongly discouraged.

Matt Stauffer:
And that's helpful. Can I add one note real quick? One of the things that-

Jess Archer:
Yeah.

Matt Stauffer:
... we have not named so far is one of the really cool things about tools like Vim is unlike the majority of times, we're working with really heavy editors like Code and PhpStorm and stuff like that. When you SSH into a remote server, and if you've ever done any development, DevOps or anything like that, that's admin stuff. It's happens, you are fully able to do all the same stuff you do.
And you might not have your plugins. You might not have your theme, but all those same movements that make you superfast, that don't rely on the mouse. Because again, good luck using the mouse when you're SSHing into something or whatever. But all these things that you have, all these great movements, are now available to you on every server, every Linux server, every Mac server around the world.
So anytime you're on any Linux, or Mac computer, you can type Vim and be just as fast on that one as you are on the one at home. And I've been really shocked at how much of an impact that makes for me, both SSHing into other servers and also just picking up a computer that's not my programming computer and having to work from it for a while. I'm like, "Well, I don't have everything else, but I got Vim." So it's a really portable, flexible thing. So I wanted you to keep going, but I just wanted to name that.

Jess Archer:
I, 100% agree. There's some things that I did in the early days. So I'd use the arrow keys. And even though I knew everyone was telling me, "Learn the H, J, K, L. Don't use the arrow keys." It's really hard to not do that because it's so easy. And it's very frustrating at first. Vim is frustrating to learn because for a long time, maybe not a super long time, but for a little while, you will be slower-

Matt Stauffer:
Slower.

Jess Archer:
... than you are with a normal editor, while you're still figuring these things out. And so you can actually bind the arrow keys to a NOP, or a no-operation. So they don't do-

Matt Stauffer:
Don't work.

Jess Archer:
...anything.

Matt Stauffer:
Yeah. I love that.

Jess Archer:
And I had to do that. That was the only way I could break the habit of using the arrow keys. And it is amazing how having the arrow keys, not the movement keys, right under your fingers. Not having to move that hand back a little bit. Once I got used to doing that, I'm like, "Oh, this is why they're told me to do this."

Matt Stauffer:
I love that.

Jess Archer:
Now I get it.

Matt Stauffer:
That's awesome.

Jess Archer:
And then in terms of customizing it, I mean, I tend to, I've watched quite a few YouTube videos of just watching people use it. And you'll pick up on things. And you're like, "Oh, how did they do that?" And you'll just go and learn that thing.
I start using it in my day job so many years ago. And if there was something that was annoying me about a workflow, I just write it down and then come back to it later. And figure out how to actually make that thing better. And my setup continually evolves over time because I'm constantly trying to stamp out little things that-

Matt Stauffer:
Annoy you.

Jess Archer:
... were frustrating me. And so one of the best ways there is to learn about what you can do is to look at other people's configs. So a lot of, lot of people put their Vim configuration online. It's normally in a repository like a GitHub repository called dotfiles. Because on these kind of Unix systems, all the configuration files start with a dot, which makes them hidden. So dotfiles has become the name to refer to configuration files. And my dotfiles are online. They're in GitHub.

Matt Stauffer:
Right. We'll put them in the show notes.

Jess Archer:
I think I've got like 300 and something stars on my dotfiles repo.

Matt Stauffer:
I love that. That's awesome.

Jess Archer:
Because I did a talk at VimConf and even when you're talking to a crowd of Vim people, they'll see you do things, and they're like, "That's really cool."

Matt Stauffer:
I want that. That's awesome.

Jess Archer:
And so I encourage people to share their dotfiles. But I just, what I don't encourage is just copying someone else's, verbatim.

Matt Stauffer:
I've done that.

Jess Archer:
Understand each change-

Matt Stauffer:
I regret it.

Jess Archer:
... each thing that happens in your... Yeah. I think, we've all done that. And there are these kind of premade distros or distributions of Vim and Neovim you can get that have a lot of stuff configured for you. And if that's what you like, then that's fine. But I still prefer understanding what each thing does and being very mindful about what I incorporate in. Because otherwise, as I said, it can add unexpected things that... That's my guidance on that.

Matt Stauffer:
I like that. And one of the things you mentioned there, I really appreciate about the workflows. There's a teacher in the Laravel world named Jeffrey Way, who has historically used Vim. And one of the things he told me that I really appreciate was one of the things that helped him get good at Vim was when he was annoyed with something, because it was slower in Vim than it was somewhere else. He said, and he did a little bit different than you, I like that you write it down. He said, "I'm going to stop. I'm going to figure out how I'm supposed to be doing that thing in the Vim way. And then next time, I'm going to do it the Vim way." So he's just like, "Every single time I get annoyed." He's like, "If I let those pile up and pile up and pile up, then I eventually just quit Vim."
He's like, "I've quit Vim like seven times," back then. And he's like, "But at some point," if I just say, "When I hit that annoyance, when I hit that thing that's slowing me down, rather than powering through, and it being, even just like a crappier slowier version of my normal editor," I say, "Wait a minute, step back. How was I supposed to do this in a Vimy way?"
And again, you can't do that forever, but if you do that for a couple months, you're going to be so much faster after those couple months, that'll be worth it. So it's just, you got to make that commitment to being like, "I'm going to learn this thing the whole way through," and just do it. So I love that recommendation.

Jess Archer:
I agree. I think, there is a good balance between solving a problem right now, even though it's going to take you out of the flow of the thing you're doing. Because then you can incorporate it straight away and start building that muscle memory. Other things that are not, maybe it's just like a little minor annoyance. Those are things that normally write down straight down.

Matt Stauffer:
Just write it down. Yeah.

Jess Archer:
And then come-

Matt Stauffer:
I love that.

Jess Archer:
... back to it later.

Matt Stauffer:
That's awesome.

Jess Archer:
It's like, "Oh, that thing's been bugging me, but I can kind of, I can live with it." The things that are just too painful, go and let them straight away.

Matt Stauffer:
Yeah. Yeah. Totally. That's awesome. And most of you won't be able to see this, but I'm going to hold it up for the YouTube people, I guess, not most of you, but I have a keyboard here that is, this is not Vim-related.

Jess Archer:
Oh, the Kinesis?

Matt Stauffer:
Yeah. It's the Kinesis Advantage2, I can't get any higher up, but basically you may be able to see... I can't get it to focus. Go look up just Kinesis Advantage2. And it's using a keyboard layout is not the traditional keyboard layout. I forget the name of it. Is Hex something, Ortho, something I don't know.
But basically your fingers have to be in different places. For example, the Enter key is under my thumb. The Command and Control keys are above in my thumb. And everything is in different places here. Not everything, everything except for the letters are in different places in this keyboard. And even the letters are a little bit different place.
And this is not the only keyboard. There's many keyboards that have the same layout. But when you have been using a keyboard, I mean, I used the keyboard since I was like eight or nine years old or something like that. And then I got this because I was having repetitive stress injuries, and the amount of time it took for me to get even remotely as fast in this as I was elsewhere was the most infuriating experience I've ever had.

Jess Archer:
Yes.

Matt Stauffer:
Because, and so that was similar with Vim for me, it's just like, "I hate this. What am I doing? I was perfectly fine where I was." This one is a little bit easier to stick with because I'm like, "My body requires me to do this." I still don't know if I'm quite as fast of a coder in this, because I've switched to this since I've become more of a thinker-type and a company owner versus a coder. So I might be a little tiny bit slower, but I think I'm not. But with Vim, it was a similar experience. But it was harder to justify it. Because I'm like, "I'm going slow to go fast. What is this?" And it had nothing to do with my feeling.

Jess Archer:
Yeah.

Matt Stauffer:
So that's one of the reasons why multiple times I've tried to learn Vim and gone far enough to get comfortable with it, but never able to get fully fluent with it. So I feel like, is there any trick to pushing the whole way through? Or is it just, just push, push, push and believe you're going to get there? You don't have to magic trick for that. Do you?

Jess Archer:
No magic trick. I mean, I guess, it depends on how strong your motivation is. And whether you've seen someone using it. You get that experience of like, "I want that." I guess it depends on how strong-

Matt Stauffer:
That urge is. Yeah.

Jess Archer:
... and committed you are to having that thing. And if you get into it, and it doesn't fit your mental model of editing text, that's fine. But be aware that it probably won't for everyone to start with.

Matt Stauffer:
Yeah. Yeah.

Jess Archer:
But there may be people that..., I mean, there's obviously a lot of people that prefer not using it, so. But I think most of the people that don't, that have tried it and don't like it, didn't give it enough time.

Matt Stauffer:
I was going to say, I don't know anybody.

Jess Archer:
And maybe they don't have the time.

Matt Stauffer:
But I don't anybody who's gotten good at Vim and then decided, "Eh, this isn't it," Literally nobody. So I know a lot of people who've tried and given up. And maybe that's biased. They gave up because it wasn't for them.
But I think there's something to be said that, if we could give everybody one day, where your fingers just work like a Vim master, you'd be like, "Yep. That's it. That's what I want. I will put the work in to get there." But it's just, it's so much work to get there. I feel like I'm scaring people away.

Jess Archer:
It is.

Matt Stauffer:
It's not so much work, but there is a learning curve. Don't be discouraged if you try it. If we want-

Jess Archer:
100%.

Matt Stauffer:
... people to have the chance to get really excited about watching somebody, can we potentially link one of your screencasts where you're doing your Vim thing in the show notes?

Jess Archer:
Absolutely. Yeah.

Matt Stauffer:
Okay. Cool. All right. So there's, so if you're listening to this, and you're like, "All right, I need this experience that you all are describing." Where you go watch somebody fly. We're going to link one of Jess screencasts in the show notes. So you can go take a look at it.
I know we're nearing where we need to wrap up, but before I answer, go enter door, our second last question. You know what? Nope. Before I do that, we've been talking about Vim as a general concept this whole time and almost not at all about Neovim. I'm familiar with Vim. I know nothing about Neovim. So for me and other people like me, tell me about Neovim. What reasons for them? And also, if somebody's coming at this for the first time, is there any reason for them to consider Vim? Or should everybody just go to Neovim right now?

Jess Archer:
That's a very controversial question.

Matt Stauffer:
Okay.

Jess Archer:
So Vim itself is still under active development. It's not like it was built-

Matt Stauffer:
Right.

Jess Archer:
... in the '90s and hasn't been touched since. It's still under active development. It has a single main maintainer, kind of like Laravel, things like that. They call them like the BDFL, the Benevolent Dictator For Life.

Matt Stauffer:
Yep.

Jess Archer:
And this person, Bram, is very, very opinionated on how things go. And there's been kind of a movement of people that want to take it in a bit of a different direction.

Matt Stauffer:
Okay.

Jess Archer:
And he was very resistant to that, so that's kind of where Neovim started was a bunch of people wanted to take it in a different direction. And this happens with open source software all the time. forks happen. Most of the time, those forks don't go anywhere, the kind of original one stays the popular one. At the moment, I'd say Vim is still far more popular than Neovim.

Matt Stauffer:
Okay.

Jess Archer:
But Neovim has gained so much traction compared to most software forks. And it brings a lot of modern features. One of the interesting things is, as much as Vim resisted some of the features, a lot of them are ending up in Vim now as well.

Matt Stauffer:
Interesting.

Jess Archer:
But one of the main things for me, for using Neovim, is to do with programming. And it's going to sound a little bit technical, but they've implemented a native LSP client. So LSP is Language Server Protocol. Language Server Protocol is something Microsoft invented for VS Code. And it basically provides a way that if I'm working with PHP code or JavaScript code, you can have a language server that is kind of running and understands that code. And knows all the files that are open.
And you can ask that language server to do changes to the code that are outside the scope of what a text editor can do. So in Neovim, I can replace all the occurrences of a word or a variable name in a file very easily. But those variables might not actually all be referencing the same thing. They might not be the same instance of it. And Vim has no way of knowing that because it doesn't like actually pause your code-

Matt Stauffer:
Got it.

Jess Archer:
... and understand some of the semantics of it. That's where a language server comes in. I can say, "I want to rename this variable," and it'll rename the instances of that, that actually refer to the same concept. But if you've got another method somewhere else that accepts this parameter with the same name, it's not going to go and rename those because it knows those-

Matt Stauffer:
Wow. Okay.

Jess Archer:
... are different.

Matt Stauffer:
That's smart.

Jess Archer:
So all the features that kind of like, well, so many of the features that are in VS Code around modifying and refactoring code, even things like jumping to definition, which again is very technical. But if you're using a piece of code that someone else has written, you can jump to where that code is. So you can see what that code looks like.
Or even in your own code, when you're using it somewhere, and you want to go to where that is referenced. Again, Neovim doesn't have that understanding, but a language server does. And so, when you plug a language server into Neovim, it gives it all these superpowers related to code.

Matt Stauffer:
Wow. That's amazing.

Jess Archer:
And you can use the same language servers that VS Code uses. So you basically get all the benefits that Microsoft has brought to VS Code. And all the community has created all these different language servers. You can use those in Vim now with Neovim. You can use them with regular Vim, but it's not native.

Matt Stauffer:
Okay.

Jess Archer:
You've got to use a plugin. And then that plugin has plugins.

Matt Stauffer:
Got it.

Jess Archer:
And to me that's a bit clunky. I used it for a while, but once I found that Neovim had this native Language Server Protocol support, that's when I had to like-

Matt Stauffer:
That's cool.

Jess Archer:
... I want to be as close to this as possible.

Matt Stauffer:
Okay.

Jess Archer:
It has a bunch of other things like some UI tweaks they've made that make it just that little bit nicer, that little bit more modern. You can have like floating popup windows with a photo transparency on them. Just little things like that.

Matt Stauffer:
Okay.

Jess Archer:
And the other main difference is that the configuration language for it is called Lua, which-

Matt Stauffer:
Oh, okay.

Jess Archer:
... is a well-established scripting language. So Vim itself is configured in something called Vimscript, which is this really archaic. And I find horrible to use language.
And when you're configuring it's kind of annoying to write this code. Whereas, Neovim works with Vimscript, but they favor Lua. And there's all these plugins coming out now that are written purely in Lua. They're faster. They're easy to maintain and understand.

Matt Stauffer:
I love that.

Jess Archer:
So. Sorry for getting a little bit technical there, but that's-

Matt Stauffer:
That did, a little bit.

Jess Archer:
... for me, why I like Neovim. That's why I've switched to Neovim.

Matt Stauffer:
Okay.

Jess Archer:
But if you're just editing text, Vim is everything you need.

Matt Stauffer:
Are there any downsides to Neovim, in your experience?

Jess Archer:
It is still fairly early days. So depending on if you use the nightly versions, where they basically all the code that was written that day gets kind of compiled that night and then ships out to you. You can end up with maybe it'll break using it with a certain plugin, or there'll be a bug introduced.
And I tend to like using the night release because at the rate of features that are coming, "I need these features. Give them to me." But it does also mean then that you also have to take the bugs that come with those features.

Matt Stauffer:
Got it.

Jess Archer:
But there are stable versions of Neovim. So you can go to the last stable release, and you'll have a pretty good experience there. So I don't feel like there's really any disadvantages with Neovim personally. I mean, I'm sure, people that don't like Neovim would say all reasons.

Matt Stauffer:
All the reasons. Yeah. But none that come to your mind. Yeah. Okay. So now, what I was about to ask a second ago, is there anything else that we have not covered in terms? Because I know this is a huge world, and there's so many things we can talk about. So is there anything we didn't cover in the Vim and Neovim introduction that you want us to take a chance to talk about?

Jess Archer:
I don't think so. The main things are the commands, motions, and text objects, and the language it gives you for expressing changes. The modal nature of it, the paint brush analogy. Those are the main concepts that when I first heard them explained that way, things started to click.
I kind of understood why things were the way they work. Because, as I said, it feels really weird when you first open it and nothing works the way that any other editor does. So to me, those are the main takeaways I would say.

Matt Stauffer:
Okay. So anybody who's listening to this now knows how to set up Vim. Knows how to set up Neovim. Is going to have links in the show notes to an example of Jess doing an amazing fast usage of Vim. And will link to some other notes about from the Vim documentation about how to get started with the vimtutor and everything like that.
So if you're interested in all these things, we're going to give you the basics, but there are also extensive Vim communities. There's tons of people on Twitter and Discord and conferences and so many YouTube things and multiple books. There's a book called Practical Vim and probably several others. So if you want, there's resources of plenty to learn.
If you're interested, don't feel like you can't have any help. And if you get stuck, just reach out to Jess or me on Twitter and both of us would be more than happy to help you. Although if you reach out to me, there's a good chance, I'll just refer you to Jess. But regardless, reach out to one of us, and we'd be more than happy to help you get set up.

Jess Archer:
It's one of the things I'm most passionate about.

Matt Stauffer:
I love that.

Jess Archer:
So, I love helping people get better with Vim.

Matt Stauffer:
Okay. Well, we're going to keep moving because we're running late because this is a fascinating topic. But thank you so much for sharing all that. So, I have one last question for you, which is, what insight or support did you either receive or need when you were younger that you hope more people will give to people today?

Jess Archer:
That's a really good question. I think, it's kind of funny, but I moved into a house. I moved out of home, moved into a house, and it turns out the landlord had an IT business. And so I started working at this IT business. And then I ended up through him working for a data cabler.

Matt Stauffer:
Okay.

Jess Archer:
Someone that runs cables through buildings and all this sort of stuff. And thing about that, was the work ethic and the way of thinking that was instilled in me from that kind of apprentice experience has stayed with me forever. The way of there was little things like if he was in someone's house, drilling a hole through a wall, to have a vacuum cleaner and vacuum up those little things.

Matt Stauffer:
I love that.

Jess Archer:
He was always thinking very deliberately and very considered about how all that would work. And that, to me, had a huge impression on me. And the way that he would talk about thinking about the next steps of something. So that like me as being basically an assistant, I would already be thinking, "What tool does this person need for the next job?"

Matt Stauffer:
I love that.

Jess Archer:
And having those things ready. And that sort of stuff has still stayed with me. If I'm helping my partner cooking, trying to anticipate and help and all that. So, I don't know if that exactly answers your question, but having... I don't know, that sort of just that experience of someone that takes pride in their work and passion in their work.

Matt Stauffer:
Yeah. I love that.

Jess Archer:
And having someone take a chance on me to put me in a position where I could learn that and have that exposure to that was transformative for me.

Matt Stauffer:
I love to hear that. It reminds me, Taylor often mentions the one of his grandfathers, who I think he says, he paints the underside of the drawers. And the whole idea is just doing that little, extra bit of work to really care about doing an excellent job.
And my dad was very, very big on like, "If you're going to do something, you should do it." I forget his phrase. But, basically, "If you're going to do it, do it well," was effectively what he was trying to say to us. And so, it's interesting because that's certainly not the message you get from a lot of places. It's often about just, "Get it done and go home," or whatever. And certainly people could use some of these, "Do as best as you can," things in manipulative ways. "We're all in it together. So stay later and work harder." And that's not the message here, but.

Jess Archer:
No.

Matt Stauffer:
It's so interesting, how-

Jess Archer:
Work is not your family.

Matt Stauffer:
Yes. Thank you. But it's so interesting how you're talking about the traditional trades. I feel like have had a lot more opportunity to develop these. You can meet a trades person or crafts person, who obviously deeply cares about the quality of what they're doing. And often that's been passed down. And it's something they've developed over decades.
And I feel like programming is so new. We often don't have some of those same cultures and some of those same ways of like, "Oh, I learned this from my mentor, who learned it from their mentor," because we don't have that many generations of programming.

Jess Archer:
We don't do it. No. The thing with a lot of those trades is they normally have an apprentice. And so you've got the experienced person and the apprentice that helps out, but then learning all these skills and how to think about these things. And with programming, we normally just shove our developers just on their own. They learn what they learn, and then it's, "All right, you're doing this project on your own. Go finish it."
And so, for me, in programming, pair programming has been a fantastic way of learning. Just picking up on all those little things from watching someone else work and seeing how they solve problems. How they think. Not just seeing the end result, but also seeing how they think and how they got to where they are, what mistakes they made getting to there, all that sort of stuff is super, super valuable. So, work in pairs.

Matt Stauffer:
It's funny because I used to livestream all the time, and I stopped livestreaming just because it was a lot of cost for what felt like not a lot of benefit to me. But the number one piece of feedback I got from people was, "I loved watching how you solved XYZ." And it was never the stuff that was the point of the video. The point of the video was how to do this.
But they're always like, "I loved how you solved this problem. How you debugged that thing. How you, whatever. I love seeing that." And I'm like, "Oh, maybe, that was a value that I was providing that I wasn't aware of." Because now that you're mentioning that, I was like, "Well, how can people pair program, who don't necessarily have someone to pair program?" I was like, "Oh, watch one of your videos. Watch a livestream."

Jess Archer:
Yeah.

Matt Stauffer:
It's like, "Oh, okay. That is sort of a form of pair programming, is when you're watching somebody." But it can't be these perfectly prepared videos. Nothing is wrong with those. But-

Jess Archer:
No.

Matt Stauffer:
... you're not seeing the mistakes because they edited them out because they did it 17 times. Which, again, which is fine for a certain type of video. But the pair programming requires you to see the whole thing the whole way through. And so I really appreciate that kind of note, and it's definitely making me think.

Jess Archer:
I agree. I watch Adam Wathan, who's previous guest. He's done a lot of screencasts on using Tailwind, and I learned so much about Tailwind from watching him use it. And seeing his thought process on what went into things and seeing the good and the bad and all that sort of stuff. And I'm like, "I now understand how he thinks, and it means I understand more how the framework works." What the kind of the idio-

Matt Stauffer:
Idiosyncrasies.

Jess Archer:
Idiomatic way.

Matt Stauffer:
Oh, yeah. The idiomatic way.

Jess Archer:
Yeah.

Matt Stauffer:
You're right.

Jess Archer:
So all those things, exposing yourself, too, is always good. And I need to do more of it because I got to a point now where sometimes I feel like, "I can do everything I need to do," but you can always, always improve.

Matt Stauffer:
I love that. I really appreciate that. As always, these are such good notes. I'm like, "Oh, crap. We supposed to actually continue the episode, and I just get stuck at these forever."
Okay. So if someone is listening to this, and they think you're amazing, well, first of all, they think of Vim and Neovim is amazing, we're going to have all sorts of stuff in the show notes. We'll also have links to you and your Twitter profiles.
But if they think you're amazing, how do they follow you? How do they support you? Is there any way they can give you money? What does it look like to just stay involved with Jess Archer's life?

Jess Archer:
Sure. So probably the main place is on Twitter. So Jess Archer codes on Twitter. You can follow me on GitHub. I don't know how interesting that would be, but my dotfiles and all that sort of stuff on GitHub.

Matt Stauffer:
Right.

Jess Archer:
So if you want to see those, that's where to go for those sorts of things. I have a website that I never update, so I wouldn't probably wouldn't bother going there.

Matt Stauffer:
Got it.

Jess Archer:
The only other thing is at the moment I'm working on a project with some friends I'm really excited about, and it's called Airlume, A-I-R-L-U-M-E. And it's basically a way of capturing your memories and photographs with their stories so that you can pass them down through generations.

Matt Stauffer:
Wow.

Jess Archer:
And I'm super excited about this particular project.

Matt Stauffer:
Okay.

Jess Archer:
So I can put a link to that-

Matt Stauffer:
Yeah, please.

Jess Archer:
... if you don't mind.

Matt Stauffer:
Yeah. Definitely.

Jess Archer:
And people can see what that's all about because it's almost like the way Facebook should have been combined with Google Photos, the high quality kind of storage. Because Facebook things are a combination of things about ancestry storing this timeline memories.

Matt Stauffer:
I love this.

Jess Archer:
And the idea is that we hold the data forever because deep storage now is getting so much cheaper that we can save these things and pass them down. You can have beneficiaries and-

Matt Stauffer:
Oh, my God.

Jess Archer:
... all those kinds of stuff.

Matt Stauffer:
So I'm very excited to learn more about this. So we will put this in the show notes.

Jess Archer:
Awesome.

Matt Stauffer:
And thank you for sharing that. That's awesome. Well, I guess that's it for today. And gosh, there's been so much good stuff. I'm like, "Oh, do we have to be done?" Yes, we do. Okay. Jess, this is amazing. Thank you so much for teaching us, as always. And I really appreciate you coming on today.

Jess Archer:
Thank you so much for inviting me.

Matt Stauffer:
Awesome.

Jess Archer:
It's always a pleasure chatting with you.

Matt Stauffer:
Yeah, it really is. And to the rest of you, until next time, be good to each other.