Neovim config
Articles
Keybinds
I feel like macro recording is a rare thing, so I moved it to yq/yQ
. This frees up q
as a "namespace" of sorts for other default vim keybinds I want to move out. For example, I use J
for diagnostics, so I moved the default action from J
to qj
.
Things written using italics are chords
(aka all the keys need to be pressed at the same time)
Base
Keybind |
Description |
Plugins |
<leader>a |
[A]lternate file |
|
<leader>rw |
[R]eplace [w]ord under cursor in the entire file |
|
<leader>sw |
toggle word [w]rap and visual-line keybinds |
|
Q |
[Q]uit all buffers |
|
[d |
Previous [d]iagnostic |
|
d] |
Next [d]iagnostic |
|
J |
Hover over diagnostic |
|
yq |
Merge with next line |
|
<leader>D |
[D]iagnostic loclist |
|
jk |
Exit insert mode |
|
jo |
Save file |
|
S-Enter |
Newline without continuing comment |
|
Textobjects
Keybinds |
Description |
Plugins |
aq |
[A]round [q]uotes |
|
iq |
[I]nside [q]uotes |
|
aa |
[A]round [a]phostrophes |
|
ia |
[I]nside [a]phostrophes |
|
ar |
[A]round squa[r]e brackets |
|
ir |
[I]nside squa[r]e brackets |
|
Treesitter
Keybinds |
Description |
]f |
Go to next [f]unction start |
]F |
Go to next [f]unction end |
[f |
Go to previous [f]unction start |
[F |
Go to previous [f]unction end |
]c |
Go to next [c]lass start |
]C |
Go to next [c]lass end |
[c |
Go to previous [c]lass start |
[C |
Go to previous [c]lass end |
Textobjects
Keybinds |
Description |
af |
[A]round [f]unction |
if |
[I]nside [f]unction |
ac |
[A]round [c]lass |
ic |
[I]nside [c]lass |
Telescope
The <leader>f
namespace contains keybinds which search for a specific filetype.
Keybind |
Description |
Plugins |
C-p |
Find files |
|
C-f |
Grep in project |
|
<leader>d |
Diagnostics |
lspconfig |
<leader>t |
Show builtin pickers |
|
<leader>ft |
Typescript Files |
|
<leader>fl |
Latex Files |
|
<leader>fp |
Purescript Files |
|
<leader>fn |
Nix Files |
|
Cmp
Keybind |
Description |
C-d |
Scroll completion up |
C-s |
Scroll completion down |
Enter |
Accept current competion |
Lsp
The lsp configuration introduces the namespace <leader>w
used for workspace manipulation.
Keybind |
Description |
gd |
[G]o to [d]efinition |
gr |
[G]o to [r]eferences |
gi |
[G]o to [i]mplementation |
K |
Hover |
L |
Signature help |
<leader>c |
[C]ode actions |
<leader>F |
[F]ormat file |
<leader>li |
[l]sp [i]nfo |
<leader>rn |
[R]e[n]ame |
<leader>wa |
[W]orkspace [a]dd folder |
<leader>wr |
[W]orkspace [r]emove folder |
<leader>wl |
[W]orkspace [l]ist folders |
Vimux
Vimux keybinds live in the <leader>v
namespace. Most vimux keybinds are filetype specific.
Keybind |
Description |
<leader>vc |
[V]imux clear |
<leader>vl |
[V]imux rerun last |
<leader>vp |
[V]imux prompt for command |
Luasnip
Keybind |
Description |
Tab |
Jump to next placeholder |
S-Tab |
Jump to previous placeholder |
<leader>rs |
[R]eload [s]nippets |
Filetypes
General filetype local keybinds reside inside the <leader>l
namespace.
Purescript
Keybind |
Description |
<leader>vb |
[V]imux run spago [b]uild |
<leader>vt |
[V]imux run spago [t]est |
Nix
Keybind |
Description |
<leader>lg |
Update [g]it fetch calls |
Idris
Idris keybinds live in the <leader>I
namespace.
Keybind |
Description |
<leader>IC |
Make [c]ase |
<leader>IL |
Make [l]emma |
<leader>Ic |
Add [c]lause |
<leader>Ie |
[E]xpression search |
<leader>Id |
Generate [d]ef |
<leader>Is |
[S]plit case |
<leader>Ih |
Refine [h]ole |
Lua
Keybind |
Description |
<leader>lf |
Run [f]ile |
<leader>ls |
Import [f]ile and call .[s]etup() |
Hydra
Keybind |
Description |
C-W |
Enter [w]indow mode |
<leader>v |
Enter [v]enn mode |
Window mode
Keybind |
Description |
h/j/k/l |
Move cursor by window in given direction |
H/J/K/L |
Move window in given direction |
C-h/j/k/l |
Resize window in given direction |
= |
Equalize |
s |
Split horizontally |
v |
Split vertically |
o |
Close all other |
q |
Close window |
Venn mode
Keybind |
Description |
H/J/K/L |
Continue arrow in given direction |
f |
Surround selected region with box |
Firenvim
The following keybinds are available only when running inside firenvim:
Keybind |
Description |
C-z |
Expand window |
Small plugin keybinds
Keybind |
Description |
Plugins |
gcc |
Comment line |
nvim-comment |
gc |
Comment selection |
nvim-comment |
C-g |
Open neo[g]it |
neogit |
<leader>yg |
[Y]ank remote [g]it url |
gitlinker |
r[a][b] |
Change surrounding pair from a to b |
mini.surround |
d[a] |
Delete surrounding pair of a |
mini.surround |
s[m][a] |
Surround the motion m with a |
mini.surround |
s[a] |
Surround selected code with a |
mini.surround |
g= |
Evaluate text |
mini.operators |
gm |
Duplicate text |
mini.operators |
gr |
Replace text with register |
mini.operators |
gx |
Exchange text |
mini.operators |
C-F |
Interactive file broswer |
mini.files |
s |
Flash [s]earch |
flash |
S |
Flash treesitter [s]elect |
flash |
r |
remote [f]lash |
flash |
R |
remote treesitter [f]lash |
flash |
C-s |
Toggle flash [s]earch |
flash |
C-n |
Open filetree |
nvim-tree |
<leader>p |
[P]aste imge from clipboard |
clipboard-image.nvim |
<leader>L |
[L]azy ui |
lazy.nvim |
C-h/j/k/l |
Navigate panes |
vim-tmux-navigator |
<leader>H |
Add file to harpoon |
harpoon |
C-a |
Harpoon quick menu |
harpoon |
C-s q/w/e/r/a/s/d/f/z |
Open harpoon file with index 0-9 |
harpoon |
lc |
Open [l]ocal [c]argo.toml |
rust-tools |
Undocumented
Iron.nvim
Iron.nvim commands rest in the <leader>i
namespace. There is a lot of them, and I rarely use this plugin, so I won't document them here just yet.
Magma
Magma commands live under the namespace <leader>M
. I barely use this plugin, so I won't document my keybinds just yet.
Gitsigns
I use a slightly modified version of the default keybinds, and I've been too lazy to document everything.