Neovim Configuration for 2025
Here are 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
- I maintain my own fork of kickstart-modular.nvim.
This is essentially
kickstart.nvim
, but structured into directories rather than a singleinit.lua
, making it easier to manage. - I apply my customizations in a single commit.
- I periodically pull in upstream changes, allowing me to stay up-to-date with core plugins while maintaining my modifications.
Customizations
I try to keep my customizations on top of kickstart.nvim
minimal and avoid having too many plugins in general.
Even though I customize it a bit, the base plugins might be all you need as it already includes the essentials like plugin management, LSP, and general quality-of-life improvements for writing code.
Here are seven plugins that I add on top of ones included in kickstart.nvim
:
Plugin | Description |
---|---|
bufferline.nvim | Displays 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.nvim | Useful for quickly inserting images into Markdown blog posts via copy/paste. |
cmp-spell | Adds spell-checking suggestions to nvim-cmp auto-completion. |
karen-yank | Prevents deletions (D , dd ) from copying content into the paste register, making yanking more explicit. |
key-analyzer.nvim | Provides a quick overview of key mappings. |
rose-pine.nvim | My current colorscheme. |
vim-fugitive | Git integration for Neovim. |
In addition to these plugins, I have several customizations to the base config that enhance my workflow:
- Backups: I enable backups using
set backup
, which has saved me a few times. - Buffer Navigation: I map
<Tab>
and<Shift-Tab>
to switch between buffers, which pairs well withbufferline.nvim
. - Auto-complete: I add
hrsh7th/cmp-buffer
tocmp.lua
to enable auto-completion of words from open buffers. - Mini.nvim Enhancements: While
kickstart.nvim
includes somemini.nvim
plugins, I also addmini.indentscope
,mini.icons
, andmini.files
. - Telescope Optimization: I modify
telescope.lua
so that when inside a Git repository, searches start from the repository root. - Relative Line Numbers: I set
vim.opt.relativenumber = true
for relative line numbering. - Mouse Behavior: I disable visual selection with the mouse, as I find it more disruptive than helpful.
Not many changes to be honest, and I’ve been really happy with this setup so far. If you would like to see the configuration in its entirety, it can be viewed here.