5.1 KiB
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Overview
This is a Neovim configuration based on kickstart.nvim - a single-file starter configuration that prioritizes being small, documented, and understandable. The configuration has been customized with additional plugins and settings.
Architecture
Single-File Configuration
The entire configuration is contained in init.lua (lines 1-1001). This is intentional - kickstart.nvim uses a single-file approach as a teaching tool and reference. While splitting into modules is possible, the current structure keeps everything in one place for clarity.
Plugin Management
- Plugin Manager: lazy.nvim (installed at init.lua:122-130)
- Plugin Definitions: All plugins defined in the
lazy.setup()call starting at init.lua:143 - Custom Plugins: Additional user plugins can be added in
lua/custom/plugins/init.lua
Key Plugin Categories
-
LSP Configuration (init.lua:435-698)
- Mason for LSP installation (init.lua:454-456)
- Configured servers:
pyright,zls,rust_analyzer,ts_ls,lua_ls - LSP capabilities enhanced by blink.cmp (init.lua:624)
- Autocommands for LSP attach events setup keymaps and highlighting
-
Completion (init.lua:746-837)
- blink.cmp for autocompletion
- LuaSnip for snippet expansion
- Default keymap preset uses
<c-y>to accept
-
Telescope (init.lua:255-359)
- Fuzzy finder with vertical layout
- Extensions: fzf, ui-select
- Leader-based keymaps for searching files, grep, diagnostics, etc.
-
Navigation & Movement
- Harpoon2 for file bookmarking (init.lua:375-432)
- Flash.nvim for rapid cursor movement (init.lua:361-373)
- Oil.nvim for file browsing (init.lua:964-978)
- vim-tmux-navigator for seamless tmux/vim navigation (init.lua:154-170)
-
Formatting (init.lua:701-744)
- conform.nvim handles formatting
- Format on save enabled (except for C/C++)
- Configured formatters: stylua (Lua), prettier (JS/TS/CSS/HTML/JSON)
Common Commands
Plugin Management
:Lazy " View plugin status
:Lazy update " Update all plugins
:Mason " Manage LSP servers and tools (press g? for help)
LSP & Diagnostics
:LspInfo " Show LSP client status
:ConformInfo " Show formatter status
<leader>q " Open diagnostic quickfix list
File Navigation
<leader>sf " Search files
<leader>sg " Live grep
<leader><leader> " Find buffers
<leader>sn " Search Neovim config files
- " Open Oil file browser (parent directory)
Harpoon (File Bookmarking)
<leader>a " Add file to Harpoon
<leader>e " Toggle Harpoon menu
<leader>1-4 " Jump to Harpoon mark 1-4
<leader>n/<leader>p " Next/Previous Harpoon mark
Code Operations
grn " LSP rename
gra " Code action
grr " Find references (Telescope)
grd " Go to definition (Telescope)
gri " Go to implementation (Telescope)
grt " Go to type definition (Telescope)
gO " Document symbols (Telescope)
gW " Workspace symbols (Telescope)
<leader>m " Format buffer
Configuration Details
Settings
- Leader key:
<space>(init.lua:2) - Line numbers: relative + absolute (init.lua:9-10)
- No line wrapping (init.lua:19)
- Clipboard: synced with OS (init.lua:21-23)
- Undo history: persisted (init.lua:29)
- Scrolloff: 10 lines (init.lua:61)
- Cursor: blinking block in normal mode, vertical bar in insert (init.lua:68-72)
Treesitter Languages
Auto-installed parsers for: zig, python, typescript, rust, htmldjango, bash, c, html, lua, markdown, vim (init.lua:912-929)
Color Scheme
Currently using kanso.nvim (init.lua:848-856). Several commented-out alternatives available (gruvbox-material, catppuccin, kanagawa, zenbones, vague).
Custom Keymaps
<C-d>/<C-u>: Page down/up with recentering (init.lua:76-77)<C-h/j/k/l>: Window navigation (init.lua:98-101)<Esc>: Clear search highlights (init.lua:81)
Development Notes
Modifying Configuration
The main configuration is in init.lua. When making changes:
- Restart Neovim or
:source $MYVIMRC - Run
:Lazy syncif plugins were added/removed - Run
:Masonto install new LSP servers or formatters
Adding New LSP Servers
- Add server to the
serverstable (init.lua:635-663) - Add to
ensure_installedif needed (init.lua:678-681) - Restart Neovim - mason-tool-installer will auto-install
Adding Formatters
- Install via Mason or ensure it's in PATH
- Add to
formatters_by_fttable (init.lua:731-742) - Optionally add to
ensure_installed(init.lua:679)
Plugin Organization
- Custom user plugins: Add to
lua/custom/plugins/init.luaor create new files in that directory - Kickstart example plugins: Located in
lua/kickstart/plugins/(currently commented out/unused)