 So I was going through my init.vim, my NeoVim configuration, and I thought it'd be kind of fun to do a screen recording while I kind of built one from scratch. This way you could see what a data scientist's vim looks like. The first thing I was doing here was setting up vim1. Vim1 is a color scheme that I just like. So here there's a black background, kind of like purple words. I'm opening up a Python file just so you can see the syntax highlighting there also. Something that needs to be set is the term GUI color to make the color scheme actually work. And that's it. Okay, Nurtury. This is a really common vim plugin. It opens up a sidebar where you can do some file exploration. Lightline is a really nice vim plugin. Sometimes, so I used to use PowerBar with like an airline theme, but it has a glyph dependencies or font dependencies with Lightline. So you see the status bar at the bottom, how the normal is highlighted. It tells you how far down in the file you are. That's what Lightline is doing. It's adding some additional information in that status line. I just like that it doesn't take very many dependencies. So it works well across my different systems. This is vim fugitive. This is a huge vim plugin. It probably deserves a video all on its own. Vim fugitive lets you run the common git commands. So I'll be running git commit, git add, git init. But I'm only showing a fraction of what vim fugitive has to offer. One mode that I didn't really show in this screencast is if you just run git. It opens up this summary file, almost like how in VS code you could have like this little side pane showing you what's tracked and staged. You can have the same thing in vim. You get a little split window that opens up in the bottom just by running the git command and that opens up the fugitive summary. So it's really nice. vim gutter opens up the gutter, which is to the left of the line numbers to show you what has changed in your file. What I'm going to show in this little section of the screen recording those is that there is a lag. So the default lag is 4,000 milliseconds. So you'll see I make a change and it takes about four seconds before the minus turns into a plus. This is something that you can change in the init file. So what I end up doing here is I end up just kind of playing with some different speeds. So the next setting here is going to be 1,000 milliseconds and finally I'll switch to 100 milliseconds, which is what I settle on just because I like the responsiveness of 100 milliseconds. So yeah, I'm just reloading the file, testing out 1,000 milliseconds. You see the response is a little bit faster. Yeah, even 1,000 milliseconds, at least personally I just don't really care for waiting that long for response. Yeah, you'll see this pretty immediately. So I delete, boom, the minus sign shows up and the plus sign shows up for these added lines. So yeah, the get gutter is nice. This is some additional settings I put in the light line that are get related. So you can actually pull in information from fugitive and have it show on the status line. So if you look on the status line, you'll see master. That wasn't there before. That is a configuration that was just set in that block of text in the init file. So here I'm going to switch to new branch. You'll see a new branch is now set up in the status line. Doing a get add, get commit, and then I'll merge to master and you'll see it switch back to master. And this is useful. You know, when you work in a team of other data scientists and you're sharing code or you want to add a new feature, it's important to keep track of what branch you're on. You can even do things, again, fugitive needs its own video where you can look at the blame in a side window. Easy motions. This plugin is really nice. You can go to any word instantly, essentially. So normally in Vim, you say I want to move forward five words or back three words. You go to the end of the sixth word with easy motions. You press this key combination and all these characters highlight and then you press those characters and you go directly to that word. So you can get anywhere in your file instantly. Sent to window. So this plugin is kind of what makes your Vim text editor more like an IDE where you're sending commands to a REPL to get evaluated. So here I just opened up the Neo Vim's terminal and I'm going to highlight some lines and run a sent to window key combination and it's going to send it to the REPL and evaluate. So this is almost spider-like if you use spider or our studio where you run some lines and it gets evaluated. But sent to window on its own, I think is almost too minimal. So what I end up doing, and I'll show this in just a second, as I set up my split windows, I put special attention into setting up these key combinations. So here's my settings for the window splits. By default, split below, split right. And since I have multiple windows, I want to make switching between windows a little bit easier so I could just hit CTRL-HA-KL to switch to the different windows. Also, since I'm using these windows for this send to window setup, I want to resize the windows easy. So that's what this block is. Sometimes I like the window below. Sometimes I like it to the right. So this is easy switching for switching the window from right to bottom. LeaderTR opens up a R terminal and LeaderTP opens up a Python terminal. So this is just showing off sent to window with those splits. So it opened in the bottom here. And here I'm just switching right to left. Or sorry, right to bottom, bottom to right. And resizing the window with the new key combinations. And this just makes things so easy. So easy when working with windows. Comfortable motions. So now that the file is getting a little bit longer, maybe you might want to scroll through a file, right? So comfortable motions you can push CTRL-D to scroll down or CTRL-U to scroll up. And it has this almost like a smooth feel to it. Almost like you just let a mouse wheel roll down. You won't see it so well in this screencast because there's kind of a frame rate limitation I set here. But if you install it and give it a try, you'll feel the smooth motion. So I usually use this when I'm scrolling through a file and I'm just kind of skimming it to see how things look. Maybe I'm in general just kind of looking for something. Normally if I'm searching for a word, I'll just do like a slash and then find a word. This is just more kind of skimming a file. Okay, so these are the NCM packages. These are huge. This is what allows for the autocompletion. So NCM2 and that YARP package is what's needed for some basic autocompletion. Out of the box, you won't see anything. You have to install these additional NCM2 plugins. So right there I just typed DF underscore chains and nothing happened. But now I'm uncommenting buffword and path. So what buffword does is it takes the words that's already in that script. And if you're typing something that seems similar to what you've already typed, it'll show up in autocompletion and path for file paths. So here I'm typing DF underscore chain and a little B in brackets shows up. That's just saying, hey, the buffer is saying you've typed this word before. If you want autocomplete. And here I'm typing a path and different files in the path are showing up. So this is great. It allows for autocompletion right within your VIM session. NCM2 Jedi, this is what allows for the Python specific completion. So if you were to have buffword and path only, you wouldn't be able to do something like import pandas as PD, PD dot. Here I'm able to see like dot data frame and it shows up. I could scroll through all the different options there. This is made possible by NCM2 Jedi. I'm going to do the same thing here with NumPy, NP dot, and you'll see array. Absolutely value all those different things. So again, so many options to scroll through. It's just so nice to have the autocompletion. R is something similar. So NVMR is its own IDE. NCMR allows for the autocompletion. Unfortunately, I didn't capture that in this screen recording, but it's similar enough to the Jedi idea that you could, you can still get the sense when you load, like when you type LIB for library, library will be offered as a autocompletion. AL is a huge linting package or plugin, I guess, for VIM. Here I'm going to be using Flake 8 for the Python scripts and Linter for R. There was all these configurations you can set. Like I just want to see the errors. I just want to see the warnings. Here I'm just showing what basic Flake 8 does. So if you pip install Flake 8, you'll see warnings, errors. It tells you like the error code and which line was the issue. So here, for example, Flake 8 is giving this error 501, which is a line length error. It's just saying that, hey, your line is too long. Same with line 10. Line 16 is different. I have a spacing issue. So Flake 8 saying, hey, you got to fix this spacing issue. And so I delete it and you'll see that in the gutter that it changes too. So Flake 8 shows up as one of those sideways pointing chevrons. And I'm just kind of messing around with the script so you can see Flake 8 doing its thing. And again, the auto update, the update timer that was set before for gutter is being used here for Flake 8. So because the update time is here set at 100 milliseconds, we're getting quick feedback from the Linter. Oh, and also with Flake 8, you have this config file. I always ignore this E501, which is that line length error. Personally, I just don't really care for that error. I'll take anything else in Flake 8. But I just, I mean, there's things like URLs. There's file paths. There's all sorts of things that I use, at least that I use day to day that break this limitation of line length. So I just ignore it and say in my script that I'm running in Flake 8 with that. Oh, this is me just showing Linter. It's the same thing. Let's see. Here I just have some spacing issues. So some warnings are coming up saying, hey, fix these spaces. I sort. So I was first introduced to I sort by a colleague of mine who's a huge pie charm fan showed me this, this sorting feature in his IDE. And I thought it was pretty handy. And, you know, just doing a little search found this I sort then plug in. So what sorting is, is this idea where if you have your imports, they should be sorted in alphabetical order. But the base Python imports should go above all your other imports. So here, date time is the base library. So it's going above NumPy and pandas. I mean, here it's just working out where date time is in the right alphabetical order in relation to the other libraries. But here I'm running OS. If I run I sort on this, OS is going to bump up to that top block with date time because it's a base library. Okay, so markdown preview. This isn't necessarily like data science related, but well, I guess it could be. If you're writing a package or documentation for something, lots of times that's in a markdown file. And markdown preview is an amazing VIM plugin for previewing markdown files. So here I pull the ggplot readme and I run this markdown preview command. You can have this auto open, your browser auto open anytime you open up a readme file. I just prefer to not do that. I like running the command when I need it because sometimes I don't always want the browser open. Maybe I just want to look at the readme without the browser. But if you noticed, it also scrolled as I scrolled through the VIM file. The browser was scrolling with it. I just think it's pretty cool. Here, this is VIM startify. So I like using this plugin mostly to just open up recently edited files. So normally when you type in VIM, it opens up this kind of blank screen. Once you install startify, you get this screen with kaosay and then a list of your 10 most recent files. VIM surround, this just allows you to change things like quotes, like double quotes to single quotes, parentheses to brackets. It's just nice to have. Sometimes you just need to change surrounding characters. This is going over spelling a little bit. Usually I like the comments to be spelled correctly. Naturally, I'm just not a great speller, so I like having a little bit of health. Here I'm trying to spell the word word. W-R-D is what I wrote. So you can enter a spell checker and it offers a list of alternatives and you just pick the option you're trying to spell. So this also comes with NCM2, so an autocompletion called look, NCM2 look. So when you're typing, you can actually open up autocomplete and scroll through this huge list of possible words that you may be trying to spell. Here doing the same thing, W-O-R-D, have this huge list offered by look to scroll through. These are just some general settings. If you ever want to, if you want to read more about these, just do colon H. The big thing is at the bottom, when I escape, I do I-I and then I have some aliases for Python if I want to run a whole script, comma P, and to time a script, comma T.