This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
This is a kickstart.nvim configuration - a single-file Neovim setup designed to be a starting point for your own configuration. It's NOT a Neovim distribution, but rather a teaching tool and reference configuration.
:Lazy- View plugin status, install/update plugins:Lazy update- Update all pluginsq- Close Lazy window
:Mason- Open Mason installer UIg?- Help in Mason menu:checkhealth- Check Neovim health and diagnose issues
<leader>f- Format current buffer (uses conform.nvim)- Format on save is enabled by default (except for C/C++)
- Uses
styluafor Lua code formatting
<leader>e- Toggle Neo-tree file explorer<leader>sf- Search files (Telescope)<leader>sg- Live grep search (Telescope)<leader>sw- Search current word (Telescope)<leader>sr- Resume last Telescope search<leader>sn- Search Neovim config files<leader><leader>- Find existing buffers
grd- Go to definitiongrr- Go to referencesgri- Go to implementationgrt- Go to type definitiongrn- Rename symbolgra- Code actiongrD- Go to declarationgO- Document symbolsgW- Workspace symbols<leader>th- Toggle inlay hints
nvim- Start Neovim (plugins auto-install on first run)- Neovim's help system is the first place to look:
:helpor<space>shto search help
The entire configuration is in init.lua (~1035 lines). This is intentional for educational purposes - you can read every line top-to-bottom to understand what's happening.
Uses lazy.nvim as plugin manager with lazy-loading capabilities:
- Plugins are configured in the
require('lazy').setup()call (starting at line 248) - Each plugin can use
opts = {}for simple setup orconfig = function()for complex configuration - Plugins can specify loading conditions via
event,keys,cmd,ft, etc.
LSP setup uses a multi-layered approach:
- Mason - Installs LSP servers, formatters, linters
- mason-lspconfig - Bridges Mason with nvim-lspconfig
- mason-tool-installer - Auto-installs tools defined in
ensure_installed - nvim-lspconfig - Configures individual language servers
- blink.cmp - Provides enhanced LSP capabilities for autocompletion
LSP servers are defined in the servers table (line 691). Currently only lua_ls is configured.
Uses blink.cmp (not nvim-cmp) with LuaSnip for snippets:
- Default keymap preset uses
<c-y>to accept completion <tab>/<s-tab>to navigate snippet fields<c-space>to open menu or docs- Integrates with LSP, path, snippets, and lazydev sources
Located in lua/kickstart/plugins/:
autopairs.lua- Auto-pair brackets, quotesdebug.lua- DAP debugging setupgitsigns.lua- Additional git keymapsindent_line.lua- Indentation guideslint.lua- Linting via nvim-lintneo-tree.lua- Extended file tree config
These are commented out by default (lines 994-999). Uncomment to enable.
Place custom plugins in lua/custom/plugins/*.lua and enable by uncommenting line 1005.
<space>is the leader key (must be set before plugins load)
vim.g.have_nerd_font = true- Enables Nerd Font icons- Relative line numbers enabled
- Cursorline highlighting enabled
- Sign column always visible
- Clipboard syncs with OS (
clipboard = 'unnamedplus') - Persistent undo history (
undofile = true) - Case-insensitive search unless uppercase present
- Confirmation dialog for unsaved changes instead of error
Format on save is enabled by default except for C/C++ (line 773-786). Configured formatters are in formatters_by_ft table.
- Severity sorting enabled
- Errors underlined
- Virtual text shows diagnostic messages
- Floating windows have rounded borders
/home/robin/.config/nvim/
├── init.lua # Main config file (single file architecture)
├── lua/
│ ├── custom/plugins/ # User's custom plugins
│ └── kickstart/
│ ├── health.lua # Health check for kickstart
│ └── plugins/ # Optional kickstart plugins
├── lazy/ # Lazy.nvim plugin storage (gitignored)
├── mason/ # Mason-installed tools (gitignored)
├── .stylua.toml # Lua formatter config
└── lazy-lock.json # Plugin version lockfile (gitignored in this repo)
Uses these settings (.stylua.toml):
- Column width: 160
- Indent: 2 spaces
- Quote style: Auto-prefer single quotes
- Call parentheses: None (Lua-style
func 'string')
Required for full functionality:
git,make,unzip, C compiler (gcc)ripgrep(for telescope grep)fd-find(for telescope file finding)- Clipboard tool (
xclip/xselon Linux) - Nerd Font (optional but recommended)
While this configuration is single-file by design, users who want a modular structure can:
- Split into multiple files in
lua/directory - Use
require()to load modules - See kickstart-modular.nvim fork for examples
The single-file approach is maintained for teaching purposes and ease of understanding.