4.3 KiB
4.3 KiB
My neovim workflow
All configs are in my dotfiles.
Trick or treat
Search current word: *
Search multiple words:
:/\vword1|word2|word3
Replace word:
:%s/word1/word2/g
Delete all lines contain word:
:g/word/d
Delete all lines not contain word:
:g!/word/d
:v/word/d
Play macro a
(after selecting lines):
:norm! @a
Sort lines (after selecting lines):
:sort -u
Reverse lines (after selecting lines):
:!tail -r
Column-ize lines:
:!column -t
Jumpo
Basic:
gg
: first lineG
: last line0
: first character of line$
: last character of linew
,b
: word forward/backwarde
,ge
: end of word current/beforeW
,B
: WORD (word with special char) forward/backwardE
,gE
: end of WORD current/beforef{char}
,F{char}
: find forward/backward character%
: jump between matching pair of()
,[]
,{}
Advance:
CTRL-O
,CTRL-I
: cursor position backward/forward{
,}
: paragraph backward/forwardH
: top of screenM
: middle of screenL
: bottom of screenCTRL-]
,CTRL-T
: jump to tag/jump back from tag- Support jump to Go definition with fatih/vim-go.
Keymap
Use both \
and ;
as leader key:
vim.keymap.set("n", ";", "<Leader>", { remap = true })
vim.keymap.set("n", "'", "<Leader>", { remap = true })
Ground rules:
-
<Leader>
prefix: prefer global keymap -
<Space>
prefix: prefer lsp keymap, for coding of course :D -
Native neovim:
gcc
: comment/uncomment current linegc
: comment/uncomment selected linesgx
: open file/url under cursorQ
,@
: execute last macro]d
,[d
: next/previous diagnosticK
: hover
-
Black hole register:
<Leader>d
:d
without yank<Leader>c
:c
without yank<Leader>x
:x
without yank
-
With ibhagwan/fzf-lua:
<Leader>f
: find files<Leader>l
: find lines<Leader>rg
: grep files<Leader>g
: git status- With neovim/nvim-lspconfig
helps:
<Space>s
: list lsp symbols<Space>r
,gr
: list references<Space>i
,gi
: list implementation<Space>ca
: list code action
-
With hrsh7th/nvim-cmp:
<C-Space>
: trigger completion
-
With nvim-tree/nvim-tree.lua, inside nvim-tree:
<C-n>
: toggle<Leader>n
: locate filea
: created
: deleter
: renamex
: cutc
: copyp
: pasteU
: toggle hidden
-
:A
: open alternate file
-
- With mini-git
]C
,[C
,]c
,[c
: next/previous git change- With mini-surround
sa
: add surroundsd
: delete surroundsr
: replace surround
-
With stevearc/conform.nvim:
<Space>f
: format code
-
With neovim/nvim-lspconfig:
<Space>e
: current diagnostic<Space>lr
: restart lsp servergd
: go to definition<Space>k
,gk
: hover<F2>
: rename
-
With github/copilot.vim:
<M-Right>
: completion, replaceTab
References / Thanks
- vim docs:
- neovim official docs:
- Hidden gem: