jarv.org

Neovim Configuration for 2025

Since I am two months into 2025 without any new posts I thought it would be nice to jot down some notes on how my Neovim configuration management evolved in the last year.

For longtime Vim → Neovim users like me who prefer a simple and sane way to manage their configuration, I highly recommend kickstart.nvim as a starting point. It provides a minimal yet functional configuration that is easy to understand, making it ideal for those who don’t want to commit to a pre-built template without knowing what it does.

My Configuration and Workflow

  1. I maintain my own fork of kickstart-modular.nvim. This is essentially kickstart.nvim, but structured into directories rather than a single init.lua, making it easier to manage.
  2. I apply my customizations in a single commit.
  3. I periodically pull in upstream changes, allowing me to stay up-to-date with core plugins while maintaining my modifications.

Additional Plugins

Currently, I use seven additional plugins on top of the base kickstart.nvim setup:

PluginDescription
bufferline.nvimDisplays open buffers as tabs at the top of the session. I find this helpful for keeping track of my open buffers but there are a lot of different methods to do that.
clipboard-image.nvimUseful for quickly inserting images into Markdown blog posts via copy/paste.
cmp-spellAdds spell-checking suggestions to nvim-cmp auto-completion.
karen-yankPrevents deletions (D, dd) from copying content into the paste register, making yanking more explicit.
key-analyzer.nvimProvides a quick overview of key mappings.
rose-pine.nvimMy current colorscheme.
vim-fugitiveGit integration for Neovim.

Customizations

In addition to plugins, I have several personal customizations that enhance my workflow:

  1. Backups: I enable backups using set backup, which has saved me a few times.
  2. Buffer Navigation: I map <Tab> and <Shift-Tab> to switch between buffers, which pairs well with bufferline.nvim.
  3. Additional Completion Sources: I add hrsh7th/cmp-buffer to cmp.lua to enable auto-completion of words from open buffers.
  4. Mini.nvim Enhancements: While kickstart.nvim includes some mini.nvim plugins, I also add mini.indentscope, mini.icons, and mini.files.
  5. Telescope Optimization: I modify telescope.lua so that when inside a Git repository, searches start from the repository root.
  6. Relative Line Numbers: I set vim.opt.relativenumber = true for relative line numbering.
  7. Mouse Behavior: I disable visual selection with the mouse, as I find it more disruptive than helpful.

This setup has worked well for me so far, if you would like to see the configuration in its entirety, it can be viewed here.