# Neovim cheat sheet Heavily customized. Related blog post: https://lugh.ch/neovim-lessons-learned.html ## BASICS - `:checkhealth []` check base or plugin status - `:checkhealth vim.lsp` show details of LSP attached to buffer - `:verbose set expandtab?` check where `expandtab` has been set last - `:Lazy` show package manager TUI - `:Mason` show LSP management TUI - `:TSUpdate` update all Tree-sitter parsers - `:ConformInfo` useful to debug why a formatter times out ## NAVIGATING ## Windows, splits & tabs - `Ctrl`+`wq` close window - `Ctrl`+`ws` split window **horizontally** - `Ctrl`+`wv` split window **vertically** - `Ctrl`+`h/j/k/l` move between split windows - `Ctrl`+`w=` equalize split window width and height - `Ctrl`+`wr` swap position of two windows - `Ctrl`+`wT` move active split window to new tab - `gt` or `gT` switch forward/reverse between tabs ## Buffers - `leader`+`leader` lists open buffers in `snipe.nvim` - In snipe.nvim popup: Hit `D` to close the selected buffer - `:bd` close current buffer ## Text - `w/e` move to **start/end of next word** - `b` move to **start of previous word** - `Ctrl`+`0` start of line - `Ctrl`+`$` end of line - `Ctrl`+`d/u` scroll down/up 1/2 page while keeping the cursor centered - `Ctrl`+`o` jump to location you were before (e.g. after using `gg`) - `Ctrl`+`i` jump back to location you were before (after using `Ctrl`+`o`) - `s` highlight jump targets w/ `flash.nvim` ## LSP, Code & Diagnostics - `Ctrl`+`j/k` scroll down/up through LSP suggestions - `K` show LSP context info - `gd` go to definition - `gr` show references of function - `grn` renames all refs of the symbol under cursor - `leader`+`q` toggle `trouble.nvim` quickfix list - `leader`+`da` go to next diagnostic (any severity) - `leader`+`dw` go to next diagnostic (_warning_ severity) - `leader`+`de` go to next diagnostic (_error_ severity) ## Telescope - `↓` or `Ctrl`+`n` scroll down (**n**ext) file list - `↑` or `Ctrl`+`p` scroll up (**p**revious) file list - `Ctrl`+`d/u` scroll down/up in preview pane - `Ctrl`+`/` help - `Ctrl`+`v` open file in **vertical** split - `Ctrl`+`x` open file in **horizontal** split - `Ctrl`+`t` open file in new tab ## Oil - `Ctrl`+`d/u` bottom/top of file list - `Ctrl`+`p` preview file - `Ctrl`+`v` open file in **vertical** split - `Ctrl`+`x` open file in **horizontal** split - `Ctrl`+`t` open file in new tab ## EDITING ### Code editing - `leader`+`o` re-format whole file or visual w/ `conform.nvim` - `i` insert mode at cursor position - `I` insert mode at **beginning of line** - `a/A` insert mode **after the current char**/**at end of line** - `o/O` insert mode a line **below**/**above** the cursor - `cw` replace the current word - `cc` replace whole line - `C` replace to the end of the line - `yy` copy the current line - `yygccp` comment and copy the current line - `yap` "yank-around-paragraph" - `yip` "yank-inside-paragraph" - `yaW` copy word w/ dashes/underscores - `p/P` paste yanked line below/above - `:windo diffthis` open `vimdiff` for open splits - `:vert diffsplit ` diff this file and `` - `:windo diffoff` to close diff view - `ciq` change inside quotes w/ `mini.ai` - `caq` change around quotes w/ `mini.ai` ## SELECTING ### Visual mode - `v` at cursor position - `V` line mode - `Ctrl`+`v` block mode - `vap` "visual-select-around-paragraph" - `vip` "visual-select-inside-paragraph" - `ViB` Select lines inside block (useful for commenting) ### Code selection - `Ctrl`+`s` context-sensitive text selection w/ Tree-sitter - `Backspace` reduce context-sensitive selection ## SEARCH/OPEN - `leader`+`fg` search text in files (also searches for text under cursor) - `leader`+`ff` search files (respects `.gitignore`) - `leader`+`e` toggle Oil file explorer - `leader`+`fo` recently opened files - `gf` open file under cursor in a new buffer - `gx` open link under cursor in default browser - `*` search word under cursor - `Ctrl`+`l` remove search highlight