2024-01-18 15:13:29 +01:00
# Neovim command and keybind cheat sheet
Some of these are plain Vim commands, others are specific to Neovim.
2024-01-19 08:14:11 +01:00
## BASICS
2024-01-18 15:13:29 +01:00
- `Space` leader key
2024-02-03 22:14:07 +01:00
- `:checkhealth [<pluginname>]` check base or <pluginname> status
2024-01-19 08:14:11 +01:00
- `:verbose set expandtab?` check where `expandtab` has been set last
2024-01-18 15:13:29 +01:00
- `:Lazy` show package manager UI
2024-01-19 14:32:36 +01:00
- `:Lazy restore` revert plugins to the state reflected in `lazy-lock.json`
2024-01-18 15:13:29 +01:00
- `:Mason` show Mason UI
2024-02-03 22:14:07 +01:00
- `:TSUpdate` update all treesitter parsers
- `:TSModuleInfo` show installed treesitter parsers
2024-01-19 08:14:11 +01:00
- `:LspInfo` show currently attached LSP client details
2024-01-22 22:23:59 +01:00
- `:ConformInfo` useful to debug why a formatter times out
2024-01-19 08:14:11 +01:00
2024-02-03 22:14:07 +01:00
## NAVIGATING
2024-01-18 15:13:29 +01:00
## Tabs
- `Ctrl` +`t` open a file in e.g. a Telescope finder in a new tab
- `gt` or `gT` switch between open tabs (forward/reverse direction)
2024-02-03 22:14:07 +01:00
## Windows/splits
2024-01-18 15:13:29 +01:00
- `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
2024-01-19 08:14:11 +01:00
- `Ctrl` +`wT` move active split window to new tab
2024-01-18 15:13:29 +01:00
2024-02-03 22:14:07 +01:00
## Buffers
2024-01-18 15:13:29 +01:00
2024-01-19 08:14:11 +01:00
- `Space` +`Space` shows buffers sorted by last used (via `Telescope buffers` )
2024-01-18 15:13:29 +01:00
- `:bd` close current buffer
2024-01-19 08:14:11 +01:00
- `:bn` go to next buffer
- `:bp` go to previous buffer
2024-01-18 15:13:29 +01:00
## Code
- `w` move to **start of next word ** (ignores punctuation due to remap)
- `e` move to **end of next word ** (ignores punctuation due to remap)
- `b` move to **start of previous word ** (ignores punctuation due to remap)
2024-02-03 22:14:07 +01:00
- `Ctrl` +`0` start of line
- `Ctrl` +`$` end of line
2024-01-18 15:13:29 +01:00
- `Ctrl` +`d` scroll **down ** 1/2 page while keeping the cursor centered
- `Ctrl` +`u` scroll **up ** 1/2 page while keeping the cursor centered
2024-01-24 11:18:01 +01:00
- `Ctrl` +`o` jump to location you were before (e.g. after using `gg` )
2024-02-03 22:14:07 +01:00
- `Ctrl` +`i` jump back to location you were before (after using `Ctrl` +`o` )
- `f<char>` jump forward to `<char>`
- `F<char>` jump backwards to `<char>`
- `t<char>` jump forward just before `<char>`
- `T<char>` jump backwards just before `<char>`
- `;` jump to next occurence of <char> (same line only)
- `,` jump to previous occurence of <char> (same line only)
## LSP
- `Ctrl` +`n/p` scroll down/up through LSP suggestions
- `Ctrl` +`l` accept selected suggestion
- `gd` go to definition
## Diagnostics
- `gd` go to definition
- `leader` +`qq` 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)
2024-01-18 15:13:29 +01:00
2024-01-19 08:14:11 +01:00
## Telescope windows
- `↓` or `Ctrl` +`n` scroll down (**n**ext) file list
- `↑` or `Ctrl` +`p` scroll up (**p**revious) file list
- `Ctrl` +`d` scroll **d**own in preview pane
- `Ctrl` +`u` scroll **u**p 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
2024-02-03 22:14:07 +01:00
- `Ctrl` +`q` send all items to quickfix list
- `Alt` +`q` send selected items to quickfix list
2024-01-19 08:14:11 +01:00
## EDITING
2024-01-18 15:13:29 +01:00
### Code editing
- `leader` +`i` re-indent whole file
- `leader` +`o` re-format whole file or visual with `conform.nvim`
- `i` insert mode at cursor position
- `I` insert mode at the **beginning of the line **
- `a` insert mode **one character after the current ** one
- `A` insert mode at the **end of the line **
- `o` insert mode a line **below ** the cursor
- `O` insert mode a line **above ** the cursor
- `s` delete character and replace (substitute) it
- `cw` replace the current word
2024-01-19 08:14:11 +01:00
- `cc` replace whole line
- `C` replace to the end of the line
2024-01-18 15:13:29 +01:00
- `yy` copy (yank) the current line
- `p` paste yanked line below
- `P` paste yanked line above
- `"3p` redo (put) e.g. your third last delete [source ](https://www.reddit.com/r/neovim/comments/18ri1bm/its_been_like_10_years_and_i_just_learned_that/ )
### Visual mode
- `v` at cursor position
- `V` line mode
- `Ctrl` +`v` block mode
2024-02-03 22:14:07 +01:00
## SEARCH/OPEN
2024-01-18 15:13:29 +01:00
- `leader` +`fg` search text in files (also searches for text under cursor)
- `leader` +`ff` search files (respects `.gitignore` )
2024-01-22 22:23:59 +01:00
- `leader` +`e` toggles Oil file explorer
2024-01-18 15:13:29 +01:00
- `leader` +`fo` recently opened files
2024-02-03 22:14:07 +01:00
- `gf` open file under cursor in a new buffer
- `gx` open link under cursor in default browser
- `*` search marked word