diff options
| author | 2026-04-17 10:53:56 +0100 | |
|---|---|---|
| committer | 2026-04-17 10:53:56 +0100 | |
| commit | 54008f6c0160f987bac294fce71ba6ad1f86b141 (patch) | |
| tree | 0a2e79a0e8bf8ba98a61d2516b0a7d41e9eebf59 /KEYBINDS.md | |
| parent | 2dd9783118eb9f5152a220877c09ef718250eb35 (diff) | |
| download | dotfiles-54008f6c0160f987bac294fce71ba6ad1f86b141.tar.gz dotfiles-54008f6c0160f987bac294fce71ba6ad1f86b141.tar.bz2 dotfiles-54008f6c0160f987bac294fce71ba6ad1f86b141.zip | |
docs: add comprehensive keybinds reference and copilot update rule
Diffstat (limited to 'KEYBINDS.md')
| -rw-r--r-- | KEYBINDS.md | 269 |
1 files changed, 269 insertions, 0 deletions
diff --git a/KEYBINDS.md b/KEYBINDS.md new file mode 100644 index 0000000..2d52cac --- /dev/null +++ b/KEYBINDS.md @@ -0,0 +1,269 @@ +# Custom Keybinds Reference + +All non-default keybinds across neovim, zellij, zsh, and ghostty. + +## Neovim + +Leader: `Space` | Local leader: `,` + +### General (config/keymaps.lua) + +| Mode | Key | Action | +|------|-----|--------| +| n | `Esc` | Clear search highlight | +| n | `gV` | Select last inserted text | +| n | `↓` / `↑` | Scroll viewport (C-e / C-y) | +| v | `p` | Paste without clobbering register | +| n | `,s` | Find and replace (whole file) | +| v | `,s` | Find and replace (selection) | +| n | `Space x` | Write all buffers | +| n | `Space z` | Write all and quit | +| n | `Space q` | Quit all | +| t | `Esc Esc` | Exit terminal mode | +| n | `[w` / `]w` | Prev/next warning+ diagnostic | +| n | `[e` / `]e` | Prev/next error diagnostic | +| n | `yp` | Yank current file path to clipboard | +| | `:DoasWrite` | Write file with doas privileges | + +### Navigation (plugins/init.lua) + +| Mode | Key | Action | +|------|-----|--------| +| n | `Ctrl-h/j/k/l` | Move to split/zellij pane (smart-splits) | +| n | `Space ?` | Show buffer-local keymaps (which-key) | +| n | `Space tq` | Toggle quickfix | +| n | `Space tl` | Toggle loclist | +| qf | `>` / `<` | Expand/collapse quickfix context | + +### Search (plugins/search.lua) + +| Mode | Key | Action | +|------|-----|--------| +| n | `,b` | fzf-lua buffers | +| n | `,/` | fzf-lua live grep | +| n | `,f` | fzf-lua files | +| n | `Space Space` | fzf-lua global picker | +| n | `,d` | fzf-lua diagnostics | +| n | `,r` | fzf-lua resume | +| n | `,gc` | Git buffer commits | +| v | `,gc` | Git commits for selected range | +| n | `,gC` | Git all commits | +| n | `,gb` | Git branches | +| n | `,gs` | Git status | +| n | `,gS` | Git stash | +| fzf | `Alt-p` | Toggle preview | +| fzf | `Ctrl-x` | Open in horizontal split | + +### LSP (plugins/lsp.lua) + +Neovim 0.12 built-in defaults (not listed): `grn` rename, `grr` references, +`gri` implementation, `gO` document symbols, `gra` code action, `grt` type def, +`grx` codelens run, `Ctrl-S` (insert) signature help, `]d`/`[d` diagnostic nav. + +| Mode | Key | Action | +|------|-----|--------| +| n | `Ctrl-]` | Goto definition (native) | +| n | `gD` | Goto declaration | +| n | `gd` | Goto definition (fzf-lua) | +| n | `gvd` / `gxd` / `gtd` | Definition in vsplit / hsplit / tab | +| n | `gvt` / `gxt` / `gtt` | Type definition in vsplit / hsplit / tab | +| n | `gri` | Implementation (fzf-lua override) | +| n | `grvi` / `grxi` / `grti` | Implementation in vsplit / hsplit / tab | +| n | `grr` | References (fzf-lua override) | +| n | `gvr` / `gxr` / `gtr` | References in vsplit / hsplit / tab | +| n | `Space ci` | Incoming calls | +| n | `Space co` | Outgoing calls | +| n | `gO` | Document symbols (fzf-lua override) | +| n | `Space ws` | Workspace symbols | +| n | `Space wd` | Workspace diagnostics | +| n | `Space th` | Toggle inlay hints | +| n,v | `Space f` | Format buffer (conform.nvim) | + +### Git (plugins/git.lua) + +| Mode | Key | Action | +|------|-----|--------| +| n | `Space go` | Open Neogit | +| n,v | `Space gy` | Copy git permalink | +| n | `]c` / `[c` | Next/prev git change (or diff hunk) | +| n | `Space hs` | Stage hunk | +| n | `Space hr` | Reset hunk | +| v | `Space hs` | Stage hunk (visual) | +| v | `Space hr` | Reset hunk (visual) | +| n | `Space hS` | Stage buffer | +| n | `Space hR` | Reset buffer | +| n | `Space hp` | Preview hunk | +| n | `Space hb` | Blame line | +| n | `Space tb` | Toggle blame line | +| n | `Space hd` | Diff against index | +| n | `Space hD` | Diff against last commit | +| n | `Space hc` | Change base to index | +| n | `Space hC` | Change base to HEAD | +| n | `Space tgd` | Toggle inline deleted | +| n | `Space tgw` | Toggle word diff | +| n | `Space tgl` | Toggle line highlighting | +| o,x | `ih` | Git hunk text object | +| n | `]x` / `[x` | Next/prev git conflict | + +### Git Rebase (after/ftplugin/gitrebase.lua) + +| Mode | Key | Action | +|------|-----|--------| +| n,v | `gc` | Cycle action | +| n,v | `gp` | Pick | +| n,v | `ge` | Edit | +| n,v | `gf` | Fixup | +| n,v | `gd` | Drop | +| n,v | `gs` | Squash | +| n,v | `gr` | Reword | + +### Editing (plugins/editing.lua) + +| Mode | Key | Action | +|------|-----|--------| +| n | `Ctrl-a` / `Ctrl-x` | Increment / decrement (dial.nvim) | +| v | `Ctrl-a` / `Ctrl-x` | Increment / decrement (visual) | +| v | `g Ctrl-a` / `g Ctrl-x` | Sequential increment / decrement | +| x | `Space re` | Extract function | +| x | `Space rf` | Extract function to file | +| x | `Space rv` | Extract variable | +| n | `Space rI` | Inline function | +| n,x | `Space ri` | Inline variable | +| n | `Space rb` | Extract block | +| n | `Space rB` | Extract block to file | +| n | `Space rp` | Debug printf | +| n,x | `Space rV` | Debug print variable | +| n | `Space rc` | Cleanup debug statements | + +### Treesitter (plugins/treesitter.lua) + +| Mode | Key | Action | +|------|-----|--------| +| n,v | `Alt-k` / `Alt-j` | Treewalker up / down | +| n,v | `Alt-h` / `Alt-l` | Treewalker left / right | +| n | `Shift-Alt-k` / `Shift-Alt-j` | Treewalker swap up / down | +| n | `Shift-Alt-h` / `Shift-Alt-l` | Treewalker swap left / right | + +### AI (plugins/ai.lua) + +| Mode | Key | Action | +|------|-----|--------| +| n | `Space p` | Accept Copilot NES + goto end | +| n | `Esc` | Dismiss Copilot NES | +| i | `Ctrl-f` | Accept Copilot NES (insert mode) | +| n | `Space tc` | Toggle Copilot | + +### Completion (plugins/completion.lua) + +Uses blink.cmp `cmdline` preset defaults plus: + +| Mode | Key | Action | +|------|-----|--------| +| i | `CR` | Accept completion | + +### Debug (plugins/debug.lua) + +| Mode | Key | Action | +|------|-----|--------| +| n | `Space td` | Toggle debug mode (debugmaster) | + +### Runner (plugins/runner.lua) + +| Mode | Key | Action | +|------|-----|--------| +| n | `Space to` | Toggle Overseer | +| n | `Space ob` | Build (just build, no prompt) | +| n | `Space oB` | Build (just build, with prompt) | +| n | `Space ot` | Test (just test, no prompt) | +| n | `Space oT` | Test (just test, with prompt) | +| n | `Space of` | Test current file (no prompt) | +| n | `Space oF` | Test current file (with prompt) | +| n | `Space od` | Debug test file (no prompt) | +| n | `Space oD` | Debug test file (with prompt) | +| n | `Space oa` | Autofix | +| n | `Space or` | Run task picker | +| n | `Space os` | Overseer shell | +| n | `Space ol` | Restart last task | + +### Autocmds (config/autocmds.lua) + +| Filetype | Key | Action | +|----------|-----|--------| +| help, qf, checkhealth, etc. | `q` | Close buffer | + +## Zellij + +All binds are in `shared_except "locked"` mode (active everywhere except locked mode). + +| Key | Action | +|-----|--------| +| `Alt-1` through `Alt-9` | Go to tab N | +| `Alt-t` | New tab | +| `Alt-[` / `Alt-]` | Previous / next tab | +| `Alt-w` | Toggle pane fullscreen | +| `Alt-x` | Close focused pane | +| `Alt-e` | Edit scrollback | +| `Alt-q` | Detach session | +| `Alt--` / `Alt-=` | Resize decrease / increase | +| `Ctrl-h/j/k/l` | Move focus (vim-zellij-navigator) | + +## Zsh + +Emacs mode (`bindkey -e`) is the base. + +### Custom bindings (.zshrc) + +| Key | Action | +|-----|--------| +| `Ctrl-U` | Backward kill line | +| `Ctrl-Right` | Forward word | +| `Ctrl-Left` | Backward word | +| `Alt-Right` | Forward word | +| `Alt-Left` | Backward word | +| `Ctrl-Backspace` | Backward kill word | +| `Ctrl-Delete` | Kill word | +| `Ctrl-Z` | Toggle foreground/background | +| `Ctrl-D` | Exit shell (even on non-empty line) | +| `Ctrl-X Ctrl-E` | Edit command in $EDITOR | +| `Ctrl-Y` | Copy command line to clipboard (OSC 52) | +| `.` | Smart dot expansion (.. → ../..) | +| `Shift-Tab` | Accept autosuggestion | +| `Up` / `Down` | History substring search | +| `Ctrl-R` | fzf history search (built-in) | +| `Ctrl-X Ctrl-R` | fzf history search + execute | +| `Ctrl-T` | fzf file picker (built-in) | +| `Alt-C` | fzf cd (built-in) | + +## Ghostty + +### Unbound (disabled defaults) + +| Key | Reason | +|-----|--------| +| `Ctrl-Shift-T` | Zellij handles tabs | +| `Ctrl-Shift-N` | Zellij handles panes | +| `Ctrl-Shift-O` | Unneeded | +| `Ctrl-Shift-Enter` | Zellij handles splits | +| `Ctrl-Shift-PageUp/Down` | Unneeded | + +### Custom bindings + +| Key | Action | +|-----|--------| +| `Ctrl-Shift-Up` / `Ctrl-Shift-Down` | Scroll one line up / down | +| `Alt-u` | Scroll page up | +| `Alt-d` | Scroll page down | +| `Alt-g` | Scroll to top | +| `Alt-Shift-g` | Scroll to bottom | + +## Cross-tool Shared Keys + +| Key | Neovim | Zellij | Zsh | Ghostty | +|-----|--------|--------|-----|---------| +| `Ctrl-h/j/k/l` | Split nav (smart-splits) | Pane nav (vim-zellij-navigator) | — | — | +| `Alt-h/j/k/l` | Treewalker nav | — | — | — | +| `Alt-1..9` | — | Go to tab N | — | — | +| `Alt-t` | — | New tab | — | — | +| `Alt-q` | — | Detach | — | — | +| `Alt-u` | — | — | — | Scroll page up | +| `Alt-d` | — | — | — | Scroll page down | |
