# Neovim Configuration Keybinds reference for autocompletion, LSP, linting, diagnostics, and AI features. Leader key is ``. ## Autocompletion (blink.cmp) | Keybind | Mode | Description | | --------- | ------- | --------------------------------- | | `C-y` | Insert | Accept completion | | `C-space` | Insert | Open menu or toggle docs | | `C-n` | Insert | Select next item | | `C-p` | Insert | Select previous item | | `C-e` | Insert | Dismiss completion menu | | `C-k` | Insert | Toggle signature help | | `Tab` | Command | Show and accept cmdline completion| Completion is disabled in Avante's input buffer. ### Snippets (LuaSnip) Snippets are available for Lua, Rust, Bash, Python, and Terraform. Type a snippet prefix and accept it from the completion menu (`C-y`). ## LSP ### Code Actions & Refactoring | Keybind | Mode | Description | | ------------ | ------ | ---------------------------------------- | | `ca` | Normal | Code action menu | | `ca` | Visual | Code action (quickfix for selection) | | `cf` | Normal | Apply quickfix at cursor | | `ci` | Normal | Organize imports | ### Navigation (Neovim 0.11+ built-ins) | Keybind | Mode | Description | | ------- | ------ | -------------------- | | `K` | Normal | Hover documentation | | `gd` | Normal | Go to definition | | `gD` | Normal | Go to declaration | | `grr` | Normal | Go to references | | `gri` | Normal | Go to implementation | | `grn` | Normal | Rename symbol | ### Inlay Hints Inlay hints are enabled automatically for any LSP that supports them. ## Linting & Diagnostics | Keybind | Mode | Description | | ------------ | ------------- | ---------------------------------- | | `l` | Normal | Trigger linting for current file | | `d` | Normal | Toggle inline diagnostics | | `sd` | Normal | Search all diagnostics (Telescope) | Linting runs automatically on `BufEnter`, `BufWritePost`, and `InsertLeave`. ### Configured Linters | Language | Linter | | ---------- | ---------------- | | Lua | luacheck | | Bash / sh | shellcheck | | Terraform | tflint | | Markdown | markdownlint-cli2| | Go | golangci-lint | ## Formatting | Keybind | Mode | Description | | ------------ | ------------- | --------------------------------- | | `mp` | Normal/Visual | Format file or range | | `sn` | Normal | Save without formatting | Format on save is enabled by default. ### Configured Formatters | Language | Formatter | | --------------- | --------------- | | Lua | stylua | | Rust | rustfmt | | Go | gofumpt | | Python | ruff | | Bash / sh / zsh | shfmt | | JSON | prettier | | YAML | yamlfmt | | Markdown | markdownlint-cli2| | Terraform | terraform_fmt | ## AI (Avante) Provider is selected automatically: **Cursor ACP** when `~/.local/bin/agent` exists, otherwise **Gemini API** (requires `GEMINI_API_KEY`). All tool calls require explicit approval (`auto_approve_tool_permissions = false`). ### Global Keybinds | Keybind | Mode | Description | | ------------ | ---------------- | --------------------- | | `` | Normal/Visual/Insert | Toggle Avante sidebar | | `aa` | Normal | Avante Ask | | `ae` | Normal | Avante Edit | | `ar` | Normal | Avante Refresh | ### Sidebar (defaults) | Keybind | Description | | --------- | ------------------------------- | | `A` | Apply all suggestions | | `a` | Apply suggestion at cursor | | `r` | Retry user request | | `e` | Edit user request | | `` | Switch windows in sidebar | | `` | Reverse switch windows | | `@` | Add file to context | | `d` | Remove file from context | | `q` | Close sidebar | ### Diff Review When changes are proposed and applied, a conflict-style diff appears in the buffer. Use these keybinds to accept or reject hunks: | Keybind | Description | | ----------- | ------------------------ | | `co` | Choose ours (original) | | `ct` | Choose theirs (suggested)| | `ca` | Accept all theirs | | `cb` | Choose both | | `cc` | Choose at cursor | | `]x` / `[x` | Next / previous diff hunk | ### Input Buffer The Avante input prompt auto-resizes to fit your text (up to 20 lines) and shrinks back after sending.