- neovim v0.8+
- ripgrep
- fd
- sqlite3
| Plugin | Description |
|---|---|
| catppuccin | colorscheme |
| rebelot/heirline.nvim | statusline/winbar |
| bufferline.nvim | buffer/tab line |
| alpha-nvim | greeter |
| indent-blankline.nvim | visualized indent line |
| nvim-colorizer.lua | color highlighter |
| vim-illuminated | highlight cursor word |
| zen-mode.nvim | focus mode |
| twilight.nvim | focus on current code block |
| nvim-notify | pretty vim.notify |
| dressing.nvim | pretty vim.ui.input && vim.ui.select |
| Plugin | Description |
|---|---|
| telescope.nvim | fuzzy finder |
| telescope-fzf-native.nvim | speed up telescope with fzf |
| telescope-frecency.nvim | MRU files |
| telescope-smart-history.nvim | smart history search |
| telescope-file-browser.nvim | file browser |
| nvim-neoclip.lua | clipboard search |
| Plugin | Description |
|---|---|
| neovim-session-manager | save/load sessions |
| neo-tree.lua | file explorer |
| undotree | visualize undotree |
| toggleterm.nvim | manage terminals |
| diffview.lua | pretty diffview |
| neogit | git operations |
| todo-comments.nvim | highlight and search todo comments |
| which-key.nvim | keymap popup and management |
| vim-startuptime | measure vim startup time |
| impatient.nvim | improve vim startup time |
Treesitter
| Plugin | Description |
|---|---|
| nvim-treesitter | base plugin for neovim's built-in tree-sitter(language syntax parser) |
| playground | inspect treesitter structure |
| nvim-treesitter-textobject | textobject |
| nvim-treesitter-context | fixed context header |
| nvim-treehopper | fast range selection |
| nvim-ts-rainbow2 | rainbow brackets |
| Comment.nvim | fast comment/uncomment |
| surround.nvim | fast surround brackets |
| leap.nvim | fast movement |
| gitsigns | visualized git signs |
| Plugin | Description |
|---|---|
| nvim-lspconfig | lsp config |
| nvim-lsp-installer | install lsp servers |
| lsp_signature.nvim | signature help |
| lua-dev.nvim | nvim's lua development env |
| null-ls.nvim | format/lint source provider |
| schemastore.nvim | schemas provider |
| nvim-cmp | completion framework(with tons of sources, not listed here) |
| nvim-autopairs | autopairs |
| aerial.nvim | symbols outline |
| trouble.nvim | pretty diagnostic list |
| Plugin | Description |
|---|---|
| peek.nvim | live preview |
- Never repeat
hjklmore than 3 times!!! - Use
f/F/t/Tfor inline movement, then,/;to choose. - Use
//?to search words for cross line movement, thenn/Nto choose. - with leap.nvim, you can jump to anywhere in vision:
- Normal mode:
s/Sfollowed by 2 chars - Visual mode:
x/Xfollowed by 2 chars rmotion on remote textobject(e.g.yarpto "yank a remote paragraph")
- Normal mode:
tips:
- Press
<C-O>in insert mode, temporarily switching to normal mode for one movement.
textobjects:
- pairs
- digit (
0-9) - punctuation (
_,*,,, etc.) - whitespace (space, tab, etc.)
- digit (
b: bracket, alias for),]or}q: quote, alias for',"or ```t: tag, e.g.<h1></h1>f: functiona: argument/parameterc: classg: git hunkj/k: next/last textobjects(never used!)- customs
-
e: whole buffer -
u: url -
/: comment -
i: indent
-
- not used:
rydhlzxvnm
treesitter nodes:
- Normal Mode:
vn: select current nodevx: select parent node(never used)vd/vu: swap current node with next/previous siblingvD/vU: swap parent node with next/previous sibling(never used)
- Visual Mode:
J/K: select next/previous sibling nodeH/L: select parent/child node<A-d>/<A-u>**: swap nodesm: label-based selection+/-incremental/decremental selection
surround:
ys{motion})insert()surround{motion}ds{motion}delete surround{motion}- Visual mode:
s)to insert()clipboard management:
clipboard:
[p/]ppaste before/after as block<A-]>/<A-]>cycle clipboard<Leader>iyselect from clipboard(yank history)
quick switches:
<C-a>/<C-x>can switch words liketrue/false,Monday/Tuesdayetc.
interactive insert:
<Leader>issymbols
tips:
- Insert Mode:
<C-K>{1or2char}to insert digraphs(:digraphs), e.g.<C-k>vvinsertβ.<C-V><Tab>to insert actual Tab.<C-R>insert a register content, e.g.<C-R>+to insert clipboard content.
<C-e>open/focus neo-tree<Leader>etoggle neo-tree
Inside explorer navigation:
./<bs>cd/navigate uph'/'j'/'k'/'lnavigate/open files<c-v>/<c-s>/<c-t>open in vsplit/split/tab</>switch source(file, buffer, git)
file actions:
aadd file or directory(end with/)Aadd directoryddeleterrenameycopyxcutppaste
search:
/to search file,<C-n>/<C-p>to choose, and<enter>to opensf/sgto find/grep in current node
view changes:
zR: expand allzM: close all<tab>: toggle nodeH: toggle hiddenR: refresh-
zh: toggle dotfiles -
zg: toggle gitignored files
open directories in buffer and modify like normal text
<Leader>dtoggle drex drawer<Leader>Dopen drex buffer
navigation:
h/j/k/l/<CR>: basic navigation<Tab>: toggle directory-/.: goto parent/child directory~: goto home<C-v>/<C-s>/<C-t>open in vsplit/split/tab<C-r>: reload
clipboard:
m: toggle markM: marku: unmarkU: unmark allc: edit clipboard
file actions:
s: show file statsa/A: create file or directory,Ato create inside cursor directoryd: delete current elementsD: delete all in clipboard- 't': trash current elements
- 'T': trash all in clipboard
p: copy all in clipboard to cursor positionP: move all in clipboard to cursor position- 'r': rename current elements
- 'R': rename all in clipboard
strings:
y: copy nameY: copy relative path<C-y>: copy absolute path
search for files/text:
<C-p>search git files<Leader>ffsearch files<Leader>frsearch recent files<Leader>fhsearch frecency files<Leader>fbsearch buffers<Leader>fglive grep in workspace<Leader>fwsearch current word in workspace<C-f>/<Leader>fzsearch in current buffer
Git keymaps mostly start with <Leader>g.
-
[g/]gprevious/next git hunk -
<Leader>ggopen neogit(most frequently used) -
<Leader>glopen lazygit -
<Leader>gdopen diffview -
<Leader>gDdiff current file -
<Leader>gbblameline -
<Leader>gppreview inline -
<Leader>gPpreview in popup window -
<Leader>gqsend to quickfix -
<Leader>ghoperations related to git hunks -
<Leader>gBexplore git branches -
<Leader>gCexplore git commits -
<Leader>gsexplore git status
Inside neogit:
<tab>close/expand groups1/2/... set fold levels/Sstage current/stage allu/Uunstage current/unstage allccommitppullPPush
-
gd: goto definition -
gr: goto references -
gR: list references in Trouble -
<Leader>lf: format -
<Leader>la: code action -
<Leader>lr: lsp rename -
<Leader>ld: show line diagnostics -
<Leader>lD: list diagnostics in Trouble -
[d/]d: previous/next diagnostic -
[e/]e: previous/next diagnostic error
<Leader>lp: preview(glow)<Leader>lP: live preview(peek)<Leader>li: edit code block(nvim-FeMaCo)- same as
i_<C-l>
- same as
