RSS

Neovim: All In

Info

SummaryI went all-in on neovim tooling, and it went very well (includes screenshots).
Shared2024-11-11
Revised2024-11-11 @ 12:01 UTC

This is an accounting of how I recently went all-in on Neovim with its Lua-based configuration ecosystem.

Here is my nvim config at time of writing. This folder just needs to live in $XDG_CONFIG_HOME (typically, ~/.config), and in my case, I symlink it from my dotfiles to there.

In this short post, I’ll share about the switch, some screenshots, and list the tools I’m using at the time of writing.

Backstory

I’ve used Neovim for years now, but I’ve always had one foot in the VIM world: a somewhat lengthy .vimrc (standard fare), plus vim-plug for managing plugins. I also used ale and coc-nvim for managing linters and LSPs.

This worked great for years, but I ran into an issue at work where ale and coc-nvim seemed to no longer play well together. After trying to fix it in my spare time and failing, I decided to completely burn things down and start fresh with The Neovim Way.

How the switch went

Most of the experience was dancing between reading official docs, reading blog posts, watching YouTube videos, reading source code, searching through GitHub issues, noting CHANGELOG differences since these kindly-written resources were created, etc. It was a complete hodgepodge approach, but it’s typically how I learn things, and it worked out over ~5 nights.

If you want a breakdown of how to structure your files and write plugin configs, send me an email, and I’ll consider writing some more about this!

The verdict

This tooling is incredible: the configs are almost completely declarative, updating tools is easy as pie, and it is all unbelievably fast.

At work, the ability to lint and typecheck a massive JS/TS project immediately, while I’m typing (and without any weird UI freezes…looking at you, VSCode), is critical. I am especially surprised by how good Telescope is; it’s file finding and live grep are fast and quite pleasant to use.

Screenshots

neovim start screen with customized alpha.nvim

neotree sidebar plus haskell code example

fuzzy file finding with telescope

fuzzy live grep with telescope

lazy.nvim interface

mason interface

List of the tools I used

Tool managers:

Look and feel:

Sidebar folder tree:

Language things:

Finding things:

Misc:


Thanks for reading!
— Robert