One Year Back in Neovim

Published Tue Jan 16 2024

Neovim brings me joy while working as a programmer. I love the keybindings and responsiveness, nothing feels as smooth to interact with all day. Last year I decided to make the jump from Doom Emacs back into Neovim. I had been using Doom Emacs due to the ease of setting up the essentials: highlighting, lsp, and completion. Emacs served me well, but I didn’t want to learn things the Emacs way. I was still doing my work the Vim way.

After dusting off my old Neovim configuration, I was able to get a working lsp configuration thanks in part to mason.nvim. Many of my plugins still worked, and using Telescope felt amazing in my codebases.

What I’ve Learned

Motion

Since I’ve used Vim and Neovim for many hours I see myself as an intermediate user now. This year I have been working to improve habits around movement, primarily by decreasing my usage of h,j,k, and l. Incorporating keys like $ and <C-u>/<C-d> while in normal mode has helped, as well as picking up flash.nvim for quick hopping.

Configuration

Lua is a much more readable language for me to approach than Vimscript was. This has changed my relationship with configuration. Early on since I didn’t know Vimscript I was a config script-kiddie pasting whatever the README said to get what I wanted. With Lua I have started reading more of the code I see, from other’s dots to plugin source code. I plan to continue becoming familiar with Lua and it’s toolchain.

Helpful Plugins

The Neovim ecosystem has exploded since first class support for Lua was introduced. This year a few plugins have quickly become essential to my daily use:

lsp-zero.nvim

As someone who was already sold on Neovim, configuring lsp servers, code actions, and completion was too much. I spent hours reading documentation and still didn’t have a working setup. After giving up, I used Doom Emacs to avoid configuring these things. lsp-zero is exactly what I needed. Minimal setup for the essential features that are provided through lsp integration.

Lazy.nvim

I installed Lazy.nvim on a whim, when I had a slow day and remembered there was a new “hyped” package manager for Neovim. At first I felt goofy, doing something seemingly out of hype for a plugin. Having any module under /lua/plugins load, install, configure, and map keys for plugins changed the game for me. Packer worked well, but Lazy makes managing plugins simple.

Neorg

I have spent far too much time thinking about notes and trying many apps as well as analog systems. While it is currently in a flux, I find the Neorg project very exciting. I resonate heavily with the project’s philosophy and am excited to see what it becomes. Having a daily journal note accessible in my editor continues to be incredibly convenient. Long term I am working to build a personal system using Neorg and Supernote.

Oil.nvim

For years I have held on to my file tree drawer, a familiar interface in desktop UIs. Oil has finally lead me to the light. Using oil has made me use oil less because it is not a file tree, it focuses on manipulating files instead. Oil lets me edit my files the way I edit my files, amazing.

Looking Forward

Neovim continues to be an amazing daily driver for me and I love working in the environment it provides. In the coming year the things I am most excited to see are:

  • Neorg GTD
  • Improved concealing and introduction of anticonceal

For myself I plan on continuing to improve with basic Vim keybinds and write more Lua! Or Fennel? Only time can tell.