A Basic development workflow

In this section I will talk about builtin tools that vim has to offer to make your workflow actually flow. Coming from an IDE with inline error messages, auto-completion and a big green “run” button this kind of workflow might seem weird to you, but I encourage you to give it a fair try. neovim can have all those fancy features too (with plugins), but they’re opt-in, and you should know both sides. I personally used neovim for a long time entirely relying on LSP and plugins to even be able to write code. But now that I’ve seen both perspectives, I developed my own personal workflow that includes LSP and semantic completion, but in a way less obvious way, leveraging neovim’s builtin tools as much as makes sense. ...

Getting to know your editor

In this section I will cover more details about configuring and extending neovim as an editor. This will partially apply to vim as well, so I will explicitly mention anything that is neovim-exclusive. It’s also kind of over the place with random topics, as I don’t really see an order here, just pick and choose what you’re interested in :) As I already mentioned, neovim heavily invests into Lua. This means that you can write your entire configuration using Lua! (There are some exceptions to this, such as the autoload/ directory, but for the most part everything just works with Lua) ...

Completion

While most people use some sort of auto-completion plugin, vim and neovim actually have pretty decent completion functionality built-in. If you take a look at :help ins-completion you will see a list of various completion sources, like buffer words, entire lines, file paths, tags, dictionary words, and more. To be fair, some of these are pretty useless. When writing code you will probably not find yourself using a thesaurus very frequently. However, there are two completion mechanisms that stand out here: userfunc and omnifunc. Both work the exact same way, don’t ask me why there’s two of them; for simplicity’s sake I’m just going to say “omnifunc” from now on, but I mean both, technically. ...

Finding your way around

Now that you got to know vim and understand the basics of using and configuring it, you should start working on projects. You will only get better by doing, not by reading! However, I do admit that navigating between files can be quite unintuitive, so I will discuss different strategies here. netrw vim ships with a builtin plugin called netrw. It’s a file explorer, similar to the “file tree” you might be used to from VSCode or similar. You can open netrw using various commands, one of which is :Explore (or :Ex for short). It will open a buffer displaying the current directory structure. It has a pretty ugly and useless banner at the top and unintuitive keybindings, and now it’s your best friend. ...

Introduction to vim as an editor

If you’ve never used a terminal-based text editor, vim can be quite intimidating. I want to show you the basics of using it and explain some terminology I will be using throughout this repository. Everything I talk about here applies to neovim in the exact same way, but for simplicity I will just refer to both as “vim”. Anytime I run the vim command in a terminal, just think nvim instead if you use neovim. ...

Getting started with vim motions

The best way to get started with vim motions is probably the vim tutor. It’s an interactive game that walks you through the most important vim motions and it takes ~30 minutes to complete. If you have vim installed, run vimtutor in your terminal. If you have neovim installed, run :Tutor after opening neovim. If you want to switch to neovim and don’t know the motions yet, I recommend you install a vim plugin for whatever editor you currently use. Some examples: ...

Why neovim over vim

I will list the most important reasons why I choose neovim over vim. There are many small things that are just “nicer” which on their own wouldn’t justify switching editor which I will not mention here. If none of these apply to you, you can use vim as well. A lot of what I cover in this repository will apply to vim in exactly the same way. If you want to get the most out of your editor though, I think neovim is the way to go. ...

Macros

coming soonTM