docs: extract keymap cheatsheet into CHEATSHEET.md
This commit is contained in:
@@ -0,0 +1,84 @@
|
|||||||
|
# Cheatsheet
|
||||||
|
|
||||||
|
Default Vim/Neovim bindings and commands worth remembering.
|
||||||
|
|
||||||
|
## Insert mode
|
||||||
|
|
||||||
|
- `<C-T>`: indent (`:h i_CTRL-T`)
|
||||||
|
- `<C-D>`: un-indent (`:h i_CTRL-D`)
|
||||||
|
|
||||||
|
## Normal mode
|
||||||
|
|
||||||
|
- `H` / `M` / `L`: jump to highest / middle / lowest line in window
|
||||||
|
- `<count?><C-E>`: scroll window down `<count>` lines (`:h CTRL-E`)
|
||||||
|
- `<count?><C-Y>`: scroll window up `<count>` lines (`:h CTRL-Y`)
|
||||||
|
- `<C-A>`: increment
|
||||||
|
- `<C-X>`: decrement
|
||||||
|
- `<C-w>H` / `J` / `K` / `L`: move window left / down / up / right
|
||||||
|
- `gq{motion}`: format word-wrap over `{motion}`
|
||||||
|
- `{Visual}gq`: format word-wrap of the visual selection
|
||||||
|
- `gqq`: format word-wrap of the current line
|
||||||
|
|
||||||
|
## Commands
|
||||||
|
|
||||||
|
### Quickfix list
|
||||||
|
|
||||||
|
- `:make`: run `makeprg`, put output in the quickfix list
|
||||||
|
- `:grep`: run `grepprg`, put results in the quickfix list
|
||||||
|
- `:cex {expr}`: build a quickfix list from `{expr}` and jump to the first
|
||||||
|
entry, e.g. `:cex system('make')`
|
||||||
|
- `:cgete {expr}`: like `:cex` but don't jump to the first entry
|
||||||
|
- `:copen`: open the quickfix window
|
||||||
|
- `:cdo {cmd}`: run `{cmd}` on each valid quickfix entry. Equivalent to:
|
||||||
|
|
||||||
|
```
|
||||||
|
:cfirst
|
||||||
|
:{cmd}
|
||||||
|
:cnext
|
||||||
|
:{cmd}
|
||||||
|
...
|
||||||
|
```
|
||||||
|
|
||||||
|
- `:cfdo {cmd}`: like `:cdo` but once per file
|
||||||
|
- `:cn` / `:cp`: next / previous entry that includes a filename (bound to
|
||||||
|
`]q` / `[q`)
|
||||||
|
- `:cnf` / `:cpf`: next / previous entry in a different file (bound to
|
||||||
|
`]<C-q>` / `[<C-q>`)
|
||||||
|
- `:clast` / `:crewind`: last / first entry (bound to `]Q` / `[Q`)
|
||||||
|
- `:cc [num]`: jump to entry `[num]`
|
||||||
|
|
||||||
|
### Location list
|
||||||
|
|
||||||
|
The location list is per-window. Otherwise it mirrors the quickfix commands.
|
||||||
|
|
||||||
|
- `:lmake` / `:lgrep`: like `:make` / `:grep` but into the location list
|
||||||
|
- `:lex {expr}` / `:lgete {expr}`: like `:cex` / `:cgete`
|
||||||
|
- `:lopen`: open the location-list window
|
||||||
|
- `:ldo {cmd}` / `:lfdo {cmd}`: like `:cdo` / `:cfdo`
|
||||||
|
- `:lne` / `:lp`: next / previous entry (bound to `]l` / `[l`)
|
||||||
|
- `:lnf` / `:lpf`: next / previous entry in a different file (bound to
|
||||||
|
`]<C-l>` / `[<C-l>`)
|
||||||
|
- `:llast` / `:lrewind`: last / first entry (bound to `]L` / `[L`)
|
||||||
|
- `:ll [num]`: jump to entry `[num]`
|
||||||
|
|
||||||
|
### Editing
|
||||||
|
|
||||||
|
- `@:`: repeat last command-line
|
||||||
|
- `:s/foo/bar/`: substitute the first match in the current line
|
||||||
|
- `:s/foo/bar/g`: all matches in the current line
|
||||||
|
- `:%s/foo/bar/g`: all matches in the buffer
|
||||||
|
- `:%s/foo/bar/gc`: all matches in the buffer, prompting per match
|
||||||
|
|
||||||
|
### Misc
|
||||||
|
|
||||||
|
- `:diffsplit <other-file>`: open a diff split
|
||||||
|
- `:lua << EOF ... EOF`: lua heredoc, e.g.
|
||||||
|
|
||||||
|
```vim
|
||||||
|
:lua << EOF
|
||||||
|
local tbl = {1, 2, 3}
|
||||||
|
for k, v in ipairs(tbl) do
|
||||||
|
print(v)
|
||||||
|
end
|
||||||
|
EOF
|
||||||
|
```
|
||||||
@@ -145,9 +145,6 @@ vim.keymap.set("n", "<Leader>r", function()
|
|||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
vim.keymap.set("n", "]c", ":cn<CR>")
|
|
||||||
vim.keymap.set("n", "[c", ":cp<CR>")
|
|
||||||
|
|
||||||
vim.keymap.set("n", "<C-k>", vim.diagnostic.open_float)
|
vim.keymap.set("n", "<C-k>", vim.diagnostic.open_float)
|
||||||
vim.keymap.set("n", "[d", function()
|
vim.keymap.set("n", "[d", function()
|
||||||
vim.diagnostic.jump({ count = -1, float = true })
|
vim.diagnostic.jump({ count = -1, float = true })
|
||||||
@@ -232,54 +229,3 @@ vim.keymap.set("n", "<leader>fd", vim.diagnostic.setloclist)
|
|||||||
vim.keymap.set("n", "<leader>fD", vim.diagnostic.setqflist)
|
vim.keymap.set("n", "<leader>fD", vim.diagnostic.setqflist)
|
||||||
vim.keymap.set("n", "grt", vim.lsp.buf.type_definition)
|
vim.keymap.set("n", "grt", vim.lsp.buf.type_definition)
|
||||||
vim.keymap.set("n", "gd", vim.lsp.buf.definition)
|
vim.keymap.set("n", "gd", vim.lsp.buf.definition)
|
||||||
|
|
||||||
-- Default bindings that are good to know:
|
|
||||||
-- insert mode:
|
|
||||||
-- <C-T> - indent, see :h i_CTRL-T
|
|
||||||
-- <C-D> - un-indent, see :h i_CTRL-D
|
|
||||||
-- normal mode:
|
|
||||||
-- H/M/L - Jump to highest/middle/lowest line in window.
|
|
||||||
-- <count?><C-E> - scroll window down <count> lines, see :h CTRL-E
|
|
||||||
-- <count?><C-Y> - scroll window up <count> lines, see :h CTRL-Y
|
|
||||||
-- <C-A> - Increment
|
|
||||||
-- <C-X> - Decrement
|
|
||||||
-- <C-w>H - Move window to the left
|
|
||||||
-- <C-w>J - Move window down
|
|
||||||
-- <C-w>K - Move window up
|
|
||||||
-- <C-w>L - Move window to the right
|
|
||||||
-- gq{motion} - format word-wrap of the line that {motion} moves over
|
|
||||||
-- {Visual}gq - format word-wrap of the visually selected area
|
|
||||||
-- gqq - format word-wrap of the current line
|
|
||||||
-- commands:
|
|
||||||
-- :make - execute makeprg with given args, and put the output in
|
|
||||||
-- quickfix list
|
|
||||||
-- :grep - execute grepprg with given args, and put the results in
|
|
||||||
-- quickfix list
|
|
||||||
-- :cex {expr} - Create a quickfix list using the result of {expr} and
|
|
||||||
-- jump to the first error. For example:
|
|
||||||
-- :cex system('make')
|
|
||||||
-- :cgete {expr} - same as :cex but don't jump to the first error
|
|
||||||
-- :copen - open quickfix list
|
|
||||||
-- :cdo {cmd} - execute {cmd} in each valid entry in the quickfix list.
|
|
||||||
-- works like this:
|
|
||||||
-- :cfirst
|
|
||||||
-- :{cmd}
|
|
||||||
-- :cnext
|
|
||||||
-- :{cmd}
|
|
||||||
-- etc.
|
|
||||||
-- :cfdo {cmd} - same as :cdo but on each file in quickfix list
|
|
||||||
-- :cn - go to the next error in quickfix list that includes a file name
|
|
||||||
-- :cp - go to the previous error in quickfix list that includes a file name
|
|
||||||
-- :cc [num] - go to the specified error in quickfix list
|
|
||||||
-- @: - repeat last command
|
|
||||||
-- :s/foo/bar/ - substitute the first match of foo with bar in the current line
|
|
||||||
-- :s/foo/bar/g - same as above but for all matches in the current line
|
|
||||||
-- :%s/foo/bar/g - same as above, but for all lines in buffer
|
|
||||||
-- :%s/foo/bar/gc - same as above but asking for confirmation on each match
|
|
||||||
-- :lua << EOF - run a lua snippet using lua-heredoc syntax
|
|
||||||
-- local tbl = {1, 2, 3}
|
|
||||||
-- for k, v in ipairs(tbl) do
|
|
||||||
-- print(v)
|
|
||||||
-- end
|
|
||||||
-- EOF
|
|
||||||
-- :diffsplit <other-file> - open diff split
|
|
||||||
|
|||||||
Reference in New Issue
Block a user