Neovim Configuration Reference
Current keybinds and workflows for the lazy.nvim-based configuration. Optimized for LSP, Telescope, and productivity with Wayland clipboard support.
Modes Overview
| Mode | Description | Enter From |
|---|---|---|
| Normal | Navigation, commands | Esc |
| Insert | Insert/typing | i, a, o, O |
| Visual | Select text (char, line, block) | v, V, Ctrl+v |
| Command | Ex commands (:w, :q) |
: |
| Terminal | Interactive terminal buffer | :term, <C->` |
Navigation Keybindings (Default)
| Keybind | Action |
|---|---|
h/l |
Left / right one character |
j/k |
Down / up one line |
w/e/b |
Next word / end word / back a word |
0 / $ |
Start / end of line |
gg / G |
First / last line of file |
{n}G |
Jump to line n |
Ctrl+u/d |
Scroll half screen up/down |
Ctrl+b/f |
Scroll full screen up/down |
% |
Match brackets/parentheses |
/text |
Search forward (n/N = next/prev) |
?text |
Search backward (n/N = next/prev) |
* / # |
Next/prev word under cursor |
Editing Essentials
| Keybind | Action |
|---|---|
i/a |
Insert before / after cursor |
o/O |
New line below / above |
x |
Delete character |
dd |
Delete line |
yy |
Yank (copy) line |
p/P |
Paste after / before cursor |
. |
Repeat last command |
{n}{op} |
Repeat operation n times (5dd) |
Visual Mode Tricks
v/V/Ctrl+v→ char/line/block selections- Block mode (
Ctrl+v+j/k):Iinsert before selection (applies to all lines)Aappend after selection
Custom Workflow Keymaps (Current Config)
Core Actions:
| Keybind | Action |
|---|---|
<C-s> |
Save (normal/insert/visual) |
<leader>q |
Quit |
<Esc> |
Clear search highlights |
Windows & Tabs:
| Keybind | Action |
|---|---|
<leader>sv |
Vertical split |
<leader>sh |
Horizontal split |
<leader>to |
New tab |
File Management:
| Keybind | Action |
|---|---|
<leader>ff |
Telescope: find files |
<leader>fg |
Telescope: live grep |
<leader>fb |
Telescope: buffers |
<leader>fh |
Telescope: help tags |
<leader>fp |
Projects picker |
- |
Oil file manager (float) |
Terminal & Tasks:
| Keybind | Action |
|---|---|
<C->` |
Toggle floating terminal |
<leader>tr |
Run task (Overseer) |
<leader>tt |
Task list toggle |
Formatting:
| Keybind | Action |
|---|---|
<leader>f |
Format buffer (Conform) |
Visual Mode:
| Keybind | Action |
|---|---|
J |
Move selected lines down |
K |
Move selected lines up |
LSP Workflow
Auto-installed servers:
pyright, lua_ls, clangd, rust_analyzer, bashls, jsonls, yamlls, html, cssls, marksman, taplo
| Keybind | Action |
|---|---|
gd |
Goto definition |
gD |
Goto declaration |
gi |
Goto implementation |
gr |
List references |
K |
Hover documentation |
<leader>rn |
Rename symbol |
<leader>ca |
Code action |
<leader>fd |
Format buffer (LSP) |
Git Integration
Gitsigns:
- Inline diff signs in gutter
- Hunk navigation and staging
:Gitsigns stage_hunk,:Gitsigns blame_line
LazyGit:
:LazyGit- Full-featured Git TUI
Telescope (Fuzzy Finder)
| Keybind | Action |
|---|---|
<leader>ff |
Find files |
<leader>fg |
Live grep |
<leader>fb |
Buffers |
<leader>fh |
Help tags |
<leader>fp |
Projects |
Inside Telescope:
<C-j>/<C-k>- Navigate results/- Fuzzy filter in results
Treesitter (Syntax Engine)
Auto-installed parsers:
bash, c, cpp, lua, python, rust, json, yaml, toml, html, css, javascript, typescript, markdown, markdown_inline, make, fish
- Provides enhanced highlighting and indenting
- Smart text objects and navigation
Formatting (Conform.nvim)
Auto-format on save (disabled for files >512KB)
| Language | Formatter(s) |
|---|---|
| Lua | stylua |
| Python | ruff_format, black |
| Shell scripts | shfmt |
| Fish | fish_indent |
| C/C++ | clang_format |
| JS/TS | prettier |
| JSON | jq, prettier |
| YAML | prettier |
| TOML | taplo |
| HTML/CSS | prettier |
| Markdown | prettier |
Debugging (nvim-dap + dap-ui)
Basic DAP setup included:
:DapToggleBreakpoint- Set/clear breakpoint:DapContinue- Run/start debugging:DapStepOver/Into/Out- Step through code- DAP UI auto-opens/closes with debug sessions
UI Enhancements
Current plugins:
- TokyoNight theme (night style)
- Lualine - Status line with global status
- Which-key - Keybind hints
- Dressing - Better UI for inputs/selects
- Notify - Pretty notifications
- Indent-blankline - Indentation guides
- Comment.nvim - Easy commenting
- nvim-surround - Surround text objects
Configuration Highlights
Leaders: <Space> (main), , (local)
Auto-features:
- Format on save (files <512KB)
- Cursor position restoration
- Yank highlighting
- Wayland clipboard integration
Project Management:
- Project detection via
.git,pyproject.toml,package.json,Makefile - Overseer task runner integration
- Oil file manager with hidden files shown
Performance:
- Removed noice.nvim for faster commands
- Lazy loading for most plugins
- Smart format-on-save size limits
View source
| 1 | # Neovim Configuration Reference |
| 2 | |
| 3 | Current keybinds and workflows for the lazy.nvim-based configuration. Optimized for LSP, Telescope, and productivity with Wayland clipboard support. |
| 4 | |
| 5 | --- |
| 6 | |
| 7 | ## Modes Overview |
| 8 | |
| 9 | | Mode | Description | Enter From | |
| 10 | |-----------------|-----------------------------------------------|-----------------------| |
| 11 | | **Normal** | Navigation, commands | `Esc` | |
| 12 | | **Insert** | Insert/typing | `i`, `a`, `o`, `O` | |
| 13 | | **Visual** | Select text (char, line, block) | `v`, `V`, `Ctrl+v` | |
| 14 | | **Command** | Ex commands (`:w`, `:q`) | `:` | |
| 15 | | **Terminal** | Interactive terminal buffer | `:term`, `<C-`>` | |
| 16 | |
| 17 | --- |
| 18 | |
| 19 | ## Navigation Keybindings (Default) |
| 20 | |
| 21 | | Keybind | Action | |
| 22 | |------------|--------------------------------------| |
| 23 | | `h`/`l` | Left / right one character | |
| 24 | | `j`/`k` | Down / up one line | |
| 25 | | `w`/`e`/`b`| Next word / end word / back a word | |
| 26 | | `0` / `$` | Start / end of line | |
| 27 | | `gg` / `G` | First / last line of file | |
| 28 | | `{n}G` | Jump to line n | |
| 29 | | `Ctrl+u/d` | Scroll half screen up/down | |
| 30 | | `Ctrl+b/f` | Scroll full screen up/down | |
| 31 | | `%` | Match brackets/parentheses | |
| 32 | | `/text` | Search forward (n/N = next/prev) | |
| 33 | | `?text` | Search backward (n/N = next/prev) | |
| 34 | | `*` / `#` | Next/prev word under cursor | |
| 35 | |
| 36 | --- |
| 37 | |
| 38 | ## Editing Essentials |
| 39 | |
| 40 | | Keybind | Action | |
| 41 | |---------|------------------------------------------| |
| 42 | | `i`/`a` | Insert before / after cursor | |
| 43 | | `o`/`O` | New line below / above | |
| 44 | | `x` | Delete character | |
| 45 | | `dd` | Delete line | |
| 46 | | `yy` | Yank (copy) line | |
| 47 | | `p`/`P` | Paste after / before cursor | |
| 48 | | `.` | Repeat last command | |
| 49 | | `{n}{op}` | Repeat operation n times (`5dd`) | |
| 50 | |
| 51 | ### Visual Mode Tricks |
| 52 | - `v`/`V`/`Ctrl+v` → char/line/block selections |
| 53 | - Block mode (`Ctrl+v` + `j/k`): |
| 54 | - `I` insert before selection (applies to all lines) |
| 55 | - `A` append after selection |
| 56 | |
| 57 | --- |
| 58 | |
| 59 | ## Custom Workflow Keymaps (Current Config) |
| 60 | |
| 61 | **Core Actions:** |
| 62 | | Keybind | Action | |
| 63 | |---------|--------| |
| 64 | | `<C-s>` | Save (normal/insert/visual) | |
| 65 | | `<leader>q` | Quit | |
| 66 | | `<Esc>` | Clear search highlights | |
| 67 | |
| 68 | **Windows & Tabs:** |
| 69 | | Keybind | Action | |
| 70 | |---------|--------| |
| 71 | | `<leader>sv` | Vertical split | |
| 72 | | `<leader>sh` | Horizontal split | |
| 73 | | `<leader>to` | New tab | |
| 74 | |
| 75 | **File Management:** |
| 76 | | Keybind | Action | |
| 77 | |---------|--------| |
| 78 | | `<leader>ff` | Telescope: find files | |
| 79 | | `<leader>fg` | Telescope: live grep | |
| 80 | | `<leader>fb` | Telescope: buffers | |
| 81 | | `<leader>fh` | Telescope: help tags | |
| 82 | | `<leader>fp` | Projects picker | |
| 83 | | `-` | Oil file manager (float) | |
| 84 | |
| 85 | **Terminal & Tasks:** |
| 86 | | Keybind | Action | |
| 87 | |---------|--------| |
| 88 | | `<C-`>` | Toggle floating terminal | |
| 89 | | `<leader>tr` | Run task (Overseer) | |
| 90 | | `<leader>tt` | Task list toggle | |
| 91 | |
| 92 | **Formatting:** |
| 93 | | Keybind | Action | |
| 94 | |---------|--------| |
| 95 | | `<leader>f` | Format buffer (Conform) | |
| 96 | |
| 97 | **Visual Mode:** |
| 98 | | Keybind | Action | |
| 99 | |---------|--------| |
| 100 | | `J` | Move selected lines down | |
| 101 | | `K` | Move selected lines up | |
| 102 | |
| 103 | --- |
| 104 | |
| 105 | ## LSP Workflow |
| 106 | |
| 107 | **Auto-installed servers:** |
| 108 | `pyright`, `lua_ls`, `clangd`, `rust_analyzer`, `bashls`, `jsonls`, `yamlls`, `html`, `cssls`, `marksman`, `taplo` |
| 109 | |
| 110 | | Keybind | Action | |
| 111 | |---------|--------| |
| 112 | | `gd` | Goto definition | |
| 113 | | `gD` | Goto declaration | |
| 114 | | `gi` | Goto implementation | |
| 115 | | `gr` | List references | |
| 116 | | `K` | Hover documentation | |
| 117 | | `<leader>rn` | Rename symbol | |
| 118 | | `<leader>ca` | Code action | |
| 119 | | `<leader>fd` | Format buffer (LSP) | |
| 120 | |
| 121 | --- |
| 122 | |
| 123 | ## Git Integration |
| 124 | |
| 125 | **Gitsigns:** |
| 126 | - Inline diff signs in gutter |
| 127 | - Hunk navigation and staging |
| 128 | - `:Gitsigns stage_hunk`, `:Gitsigns blame_line` |
| 129 | |
| 130 | **LazyGit:** |
| 131 | - `:LazyGit` - Full-featured Git TUI |
| 132 | |
| 133 | --- |
| 134 | |
| 135 | ## Telescope (Fuzzy Finder) |
| 136 | |
| 137 | | Keybind | Action | |
| 138 | |---------|--------| |
| 139 | | `<leader>ff` | Find files | |
| 140 | | `<leader>fg` | Live grep | |
| 141 | | `<leader>fb` | Buffers | |
| 142 | | `<leader>fh` | Help tags | |
| 143 | | `<leader>fp` | Projects | |
| 144 | |
| 145 | **Inside Telescope:** |
| 146 | - `<C-j>/<C-k>` - Navigate results |
| 147 | - `/` - Fuzzy filter in results |
| 148 | |
| 149 | --- |
| 150 | |
| 151 | ## Treesitter (Syntax Engine) |
| 152 | |
| 153 | **Auto-installed parsers:** |
| 154 | `bash`, `c`, `cpp`, `lua`, `python`, `rust`, `json`, `yaml`, `toml`, `html`, `css`, `javascript`, `typescript`, `markdown`, `markdown_inline`, `make`, `fish` |
| 155 | |
| 156 | - Provides enhanced highlighting and indenting |
| 157 | - Smart text objects and navigation |
| 158 | |
| 159 | --- |
| 160 | |
| 161 | ## Formatting (Conform.nvim) |
| 162 | |
| 163 | **Auto-format on save** (disabled for files >512KB) |
| 164 | |
| 165 | | Language | Formatter(s) | |
| 166 | |----------|-------------| |
| 167 | | Lua | stylua | |
| 168 | | Python | ruff_format, black | |
| 169 | | Shell scripts | shfmt | |
| 170 | | Fish | fish_indent | |
| 171 | | C/C++ | clang_format | |
| 172 | | JS/TS | prettier | |
| 173 | | JSON | jq, prettier | |
| 174 | | YAML | prettier | |
| 175 | | TOML | taplo | |
| 176 | | HTML/CSS | prettier | |
| 177 | | Markdown | prettier | |
| 178 | |
| 179 | --- |
| 180 | |
| 181 | ## Debugging (nvim-dap + dap-ui) |
| 182 | |
| 183 | **Basic DAP setup included:** |
| 184 | - `:DapToggleBreakpoint` - Set/clear breakpoint |
| 185 | - `:DapContinue` - Run/start debugging |
| 186 | - `:DapStepOver/Into/Out` - Step through code |
| 187 | - DAP UI auto-opens/closes with debug sessions |
| 188 | |
| 189 | --- |
| 190 | |
| 191 | ## UI Enhancements |
| 192 | |
| 193 | **Current plugins:** |
| 194 | - **TokyoNight theme** (night style) |
| 195 | - **Lualine** - Status line with global status |
| 196 | - **Which-key** - Keybind hints |
| 197 | - **Dressing** - Better UI for inputs/selects |
| 198 | - **Notify** - Pretty notifications |
| 199 | - **Indent-blankline** - Indentation guides |
| 200 | - **Comment.nvim** - Easy commenting |
| 201 | - **nvim-surround** - Surround text objects |
| 202 | |
| 203 | --- |
| 204 | |
| 205 | ## Configuration Highlights |
| 206 | |
| 207 | **Leaders:** `<Space>` (main), `,` (local) |
| 208 | |
| 209 | **Auto-features:** |
| 210 | - Format on save (files <512KB) |
| 211 | - Cursor position restoration |
| 212 | - Yank highlighting |
| 213 | - Wayland clipboard integration |
| 214 | |
| 215 | **Project Management:** |
| 216 | - Project detection via `.git`, `pyproject.toml`, `package.json`, `Makefile` |
| 217 | - Overseer task runner integration |
| 218 | - Oil file manager with hidden files shown |
| 219 | |
| 220 | **Performance:** |
| 221 | - Removed noice.nvim for faster commands |
| 222 | - Lazy loading for most plugins |
| 223 | - Smart format-on-save size limits |
| 224 | |
| 225 | --- |