neovim-config/README.md

2.7 KiB

Neovim Configuration

Personal Neovim configuration built with lazy.nvim for modern plugin management.

Requirements

  • Neovim >= 0.10
  • Nerd Font (for icons)
  • xclip (for clipboard support on Linux)
  • ripgrep (for Telescope live grep)
  • make (for building Telescope fzf-native)

Installation

  1. Backup your existing Neovim configuration if you have one
  2. Clone this repository to your Neovim config directory:
    git clone <your-repo-url> ~/.config/nvim
    
  3. Start Neovim - lazy.nvim will automatically bootstrap and install all plugins:
    nvim
    

Features

  • LSP Support: Pre-configured language servers for TypeScript, Lua, Go, Rust, C#, PHP, and more
  • Auto-formatting: Format-on-save with conform.nvim
  • Testing: Integrated test runner with neotest (Jest and Bun support)
  • Fuzzy Finding: Telescope for files, grep, LSP symbols, and more
  • Syntax Highlighting: Tree-sitter based highlighting
  • Git Integration: Gitsigns for inline git blame and hunks
  • Completions: Blink.cmp for fast autocompletion
  • File Explorer: Neo-tree for file navigation
  • Status Line: Custom Heirline configuration

Key Bindings

Leader key: Space

File Navigation

  • <leader>ff - Find files
  • <leader>fg - Live grep
  • <leader>fb - Browse buffers

LSP

  • gd - Go to definition
  • gr - Find references
  • <F2> - Rename symbol
  • <leader>a - Code actions
  • <leader>d - Show diagnostics

Testing

  • <leader>tt - Run nearest test
  • <leader>tf - Run tests in current file
  • <leader>td - Display test output

Formatting

  • <leader>f - Format buffer (also auto-formats on save)

Other

  • <leader><CR> - Open terminal
  • <leader>n - Insert C# namespace (C# files only)

Structure

.
├── init.lua                 # Entry point
├── lua/
│   ├── keybinds.lua        # Global keybindings
│   ├── diagnostic.lua      # Diagnostic configuration
│   ├── snippets.lua        # Custom snippets
│   └── plugins/            # Plugin configurations
│       ├── lsp.lua
│       ├── telescope.lua
│       ├── conform.lua
│       ├── neotest.lua
│       └── ...
└── CLAUDE.md               # AI assistant context

Customization

  • Edit plugin configurations in lua/plugins/
  • Add new plugins to the require('lazy').setup() call in init.lua
  • Modify keybindings in lua/keybinds.lua or plugin-specific files
  • LSP servers and formatters are managed in lua/plugins/lsp.lua and lua/plugins/conform.lua