Neovim

February 1, 2026 ยท 3 min read

Neovim is my primary code editor. After trying VS Code, JetBrains IDEs, and others, I keep coming back to Neovim for its speed, keyboard-driven workflow, and endless customization. Here's how my setup works.

neovim

Why Neovim?

  • Speed - Opens instantly, handles large files without lag
  • Keyboard-first - Never leave the home row
  • Customizable - Every aspect can be configured in Lua
  • Portable - Same config works on any machine with Neovim installed

Configuration Structure

My config follows a modular structure:

~/.config/nvim/
โ”œโ”€โ”€ init.lua
โ”œโ”€โ”€ lua/
โ”‚   โ”œโ”€โ”€ core/
โ”‚   โ”‚   โ”œโ”€โ”€ options.lua
โ”‚   โ”‚   โ”œโ”€โ”€ keymaps.lua
โ”‚   โ”‚   โ”œโ”€โ”€ autocmds.lua
โ”‚   โ”‚   โ””โ”€โ”€ lazy.lua
โ”‚   โ””โ”€โ”€ plugins/
โ”‚       โ”œโ”€โ”€ ui.lua
โ”‚       โ”œโ”€โ”€ navigation.lua
โ”‚       โ”œโ”€โ”€ completion.lua
โ”‚       โ”œโ”€โ”€ editor.lua
โ”‚       โ”œโ”€โ”€ git.lua
โ”‚       โ”œโ”€โ”€ formatting.lua
โ”‚       โ”œโ”€โ”€ treesitter.lua
โ”‚       โ””โ”€โ”€ lsp/
โ””โ”€โ”€ lazy-lock.json

This separation keeps things organized - core settings in one place, plugins grouped by function.

Plugin Manager: lazy.nvim

I use lazy.nvim for plugin management. It handles:

  • Lazy loading plugins on demand
  • Automatic installation
  • Lock file for reproducible setups
  • Clean UI for managing updates

Theme: Rose Pine

The Rose Pine colorscheme with the "moon" variant gives a clean, easy-on-the-eyes aesthetic:

{
  "rose-pine/neovim",
  name = "rose-pine",
  config = function()
    require("rose-pine").setup({
      variant = "auto",
      dark_variant = "moon",
    })
    vim.cmd("colorscheme rose-pine")
  end,
}

Navigation

Telescope

Telescope is the heart of my navigation workflow - a fuzzy finder for everything:

Space + sf        Search files
Space + sg        Live grep (search text)
Space + sh        Search help tags
Space + sk        Search keymaps
Space + Space     Switch buffers
Space + /         Fuzzy search current buffer
Space + s.        Recent files
Space + sn        Search Neovim config

Neo-tree

For file tree navigation, Neo-tree provides a sidebar explorer:

  • Space + e - Toggle file tree

Completion: nvim-cmp

nvim-cmp handles autocompletion with these sources:

  • LSP - Language server completions
  • LuaSnip - Snippet expansions
  • Path - File path completions

Key bindings:

Ctrl + n/p        Navigate items
Enter             Confirm selection
Ctrl + Space      Trigger completion
Ctrl + l/h        Jump in snippets

LSP Integration

Language Server Protocol support provides:

  • Go-to definition
  • Find references
  • Hover documentation
  • Rename symbols
  • Code actions

The LSP config lives in lua/plugins/lsp/ with server-specific settings.

Git Integration

Lazygit

Space + lg opens Lazygit in a floating terminal - my preferred way to handle commits, branches, and complex git operations.

Gitsigns

Gitsigns shows inline git status:

  • Signs in the gutter for added/changed/deleted lines
  • ]c / [c - Jump between hunks
  • Stage, reset, and preview hunks without leaving the editor
  • Current line blame

Editor Enhancements

Which-key

Space + ? shows available keybindings - essential for discovering commands.

Mini.nvim

A collection of small but useful modules:

  • mini.ai - Better text objects (a", i(, etc.)
  • mini.surround - Add/change/delete surrounding characters
  • mini.statusline - Clean status bar

Autopairs

Automatically closes brackets, quotes, and other paired characters.

Trouble

Space + xx opens a better diagnostics panel - errors, warnings, and TODOs in one place.

Formatting

Conform.nvim handles formatting on save:

formatters_by_ft = {
  lua = { "stylua" },
  typescript = { "prettierd", "prettier" },
  typescriptreact = { "prettierd", "prettier" },
}

Treesitter

Treesitter provides:

  • Accurate syntax highlighting
  • Better code folding
  • Incremental selection
  • Text objects based on syntax

Core Keymaps

Beyond plugins, these core mappings improve daily use:

Ctrl + h/j/k/l    Navigate between splits
Ctrl + s          Save file (works in insert mode too)
Esc               Clear search highlights
Space + pv        Open netrw
Space + tn        New tab

AI: Supermaven

Supermaven provides AI-powered code completion - faster than Copilot with better context understanding.

Getting Started

To use my config:

# Backup existing config
mv ~/.config/nvim ~/.config/nvim.bak

# Clone dotfiles and stow
git clone https://github.com/daze17/dotfiles.git ~/dotfiles
cd ~/dotfiles
stow nvim

# Open Neovim - plugins install automatically
nvim

Tips for Learning

  1. Start with core motions - hjkl, w, b, e, 0, $
  2. Learn one plugin at a time - Master Telescope before adding more
  3. Use which-key - Press Space and wait to see options
  4. Customize gradually - Understand what you're adding

The config is in my dotfiles - feel free to explore and adapt it for your workflow. I manage it with GNU Stow alongside my tmux and other configs.