Skip to main content

Breaking the (neo)vim barrier

Introduction
#

Since my first uni programming course, I’ve tried to use the elusive vim editor on multiple occasions. The lecturer, who tried to teach us Fortran 90, used vim on his machine and moved around like a wizard. Solely from the command line and without using his mouse, he deleted, updated and added code at an incredible pace. I’ve always wanted to learn this tool and I’m happy to say I’ve finally cracked the code (pun intended).

What is (Neo)vim?
#

Vim is a command line text editor, built by fellow Dutchman Bram Molenaar, that forces users to only use their keyboard to edit and navigate their code. By default, there are no buttons and no file tree. You move around using hjkl as arrow keys, select code using v (for visual) and scroll up and down with ctrl + u and ctrl + d respectively (also known as C-u and C-d).

As an extension of vim, Neovim offers support for plugins in the form of Lua scripts. These plugins can add file trees, window tabs, LSP support for a plethora of languages, refactoring tools, quality of life improvements and much more. The plugings allow you to set up a fully fledged IDE in your terminal custom built by and for you.

Picking, installing and configuring these plugins can be a bit daunting, and that’s why my Neovim-using colleague suggested trying LazyVim. LazyVim is a preconfigured,plug-and-play Neovim setup. It features a wide range of plugins and custom keybinds, trying to decrease the already steep learning curve of (Neo)vim. Alternatives to LazyVim are LunarVim and NvChad, among others.

While a preconfigured setup was great to get me started, I quickly discovered which plugins I used most and, more importantly, which plugins I didn’t ever use. In contrast to IDE’s such as VS Code and JetBrains’ offerings, he beauty of (Neo)vim is that you’re not dependent on other peoples opinions and you can create your own configuration. And that’s what I did.

My configuration
#

As for most Neovim users, there are a few plugins and tools I can’t to without. First, tree-sitter allows syntax highlighting. Next, LSP servers to enable code suggestions and auto-complete. Finally, Telescope (coincidentally dropping a new release 2 days ago) lets me fuzzy-find files and code using a few quick commands.

As time goes on, I’ll be updating my setup, which is a hobby in itself. My full configuration can be found on GitHub.