Skip to content

vscode extension with neovim text objects from A-Z + LSP whichkey + touchcursor keyboard layout + minimal zsh / Msys2's zsh setup

License

Notifications You must be signed in to change notification settings

YeferYV/RetroNvim

Repository files navigation

demo.mp4

Neovim text objects from A-Z + LSP whichkey + touchcursor keyboard layout + minimal zsh / Msys2's zsh setup



 Install 

 Keyboard-Layout 

 Wiki 

 Dependencies 


Table of Contents
  1. Neovim TextObjects/Motions
  2. Neovim GoTo
  3. keybindings.json
  4. zsh keymaps
  5. If Touchcursor Keyboard Layout Started
  6. Installation
  7. Vim Cheatsheets / Tutorials
  8. Related projects

Neovim text object that starts with a/i

text-object keymap repeater key finds and autojumps? text-object name description inner / outer
ia, aa . yes _function_args whole argument/parameter of a function outer includes braces
iA, aA . yes @Asignment inner: left side of asignment without including type outer includes left and right side
ib, ab . yes _Braces find the nearest inside of () [] {} outer includes braces
iB, aB . yes greddy_Brace use the current inside of {} outer includes {}
id, ad . greedyOuterIndentation outer indentation, expanded to blank lines; useful to get functions with annotations outer includes a blank, like ap/ip
ie, ae . nearEoL from cursor position to end of line, minus one character outer includes from start of line (line wise)
if, af . yes _function_call like function args but only when a function is called outer includes the function called
iF, aF . yes @Function inside of a function without leading comments outer includes function declaration
ag . yes @Comment inline comment outer many times same as inner
iG, aG . yes @Conditional inside conditional without blanklines outer includes the start of a condition
ih, ah . yes _htmlAttribute attribute in html/xml like href="foobar.com" inner is only the value inside the quotes trailing comma and space
ii, ai . indentation_noblanks surrounding lines with same or higher indentation delimited by blanklines outer includes line above
iI, aI . indentation surrounding lines with same or higher indentation outer includes line above and below
ij, aj . yes cssSelector class in CSS like .my-class outer includes trailing comma and space
ik, ak . yes _key key of key-value pair, or left side of a assignment outer includes spaces
iK, aK . @Block code block (inside of a function, loop, ...) outer includes line above
il, al . yes +Last go to last mini.ai text-object (which start with @ or _) requires i/a example vilk
iL, aL . yes @Loop inside while or for clauses outer includes blankline + comments + line above
im, am . yes chainMember field with the full call, like .encode(param) outer includes the leading . (or :)
iM, aM . yes mdFencedCodeBlock markdown fenced code (enclosed by three backticks) outer includes the enclosing backticks
in, an . yes +Next go to Next mini.ai text-object (which start with @ or _) requires i/a example viNk
iN, aN . yes _number numbers, similar to <C-a> inner: only pure digits, outer: number including minus sign and decimal point
io, ao . yes _whitespaces whitespace beetween characters outer includes surroundings
ip, ap . paragraph blanklines can also be treat as paragraphs when focused on a blankline outer includes below lines
iP, aP . yes @Parameter parameters of a function (>, or <, to interchange) outer includes commas + spaces
iq, aq . yes @Call like function call but treesitter aware outer includes the function called
iQ, aQ . yes @Class inside of a class outer includes class declaration
ir, ar . restOfIndentation lines down with same or higher indentation outer: restOfParagraph
iR, aR . yes @Return inside of a Return clause outer includes the `return
is, as . sentence sentence delimited by dots of blanklines outer includes spaces
iS, aS . subword like iw, but treating -, _, and . as word delimiters and only part of camelCase outer includes trailing _,-, or space
it, at . yes _tag inside of a html/jsx tag outer includes openning and closing tags
iu, au . yes _quotes inside of `` '' "" outer includes openning and closing quotes
iU, aU . yes pyTripleQuotes python strings surrounded by three quotes (regular or f-string) inner excludes the """ or '''
iv, av . yes _value value of key-value pair, or right side of a assignment outer includes trailing commas or semicolons or spaces
iw, aw . word from cursor to end of word (delimited by punctuation or space) outer includes start of word
iW, aW . WORD from cursor to end of WORD (includes punctuation) outer includes start of word
ix, ax . yes _Hex hexadecimal number or color outer includes hash #
iy, ay . same_indent surrounding lines with only same indentation (delimited by blankspaces) outer includes blankspaces
iz, az . @fold inside folds without line above neither below (supported only inside neovim) outer includes line above andd below
iZ, aZ . yes closedFold closed fold (supported only inside neovim) outer includes one line after the last folded line
i=, a= . yes @Assignment.rhs-lhs assignmentt right and left without type keyword neither semicolons inner: left assignment, outer: right assignment
i#, a# . yes @Number like _number but treesitter aware inner and outer are the same (only pure digits)
i?, a? . yes _Prompt will ask you for enter the delimiters of a text object (useful for dot repeteability) outer includes surroundings
i(, i), a(, a) . yes ( or ) inside () outer includes surroundings
i[, i], a[, a] . yes [ or ] inside [] outer includes surroundings
i{, i}, a{, a} . yes { or } inside {} outer includes surroundings
i<, i>, a<, a> . yes < or > inside <> outer includes surroundings
i`, a` . yes apostrophe inside ` ` outer includes surroundings
i', a' . yes ' inside '' outer includes surroundings
i", a" . yes " inside "" outer includes surroundings
i., a. . yes . inside .. outer includes surroundings
i,, a, . yes , inside ,, outer includes surroundings
i;, a; . yes ; inside ;; outer includes surroundings
i-, a- . yes - inside -- outer includes surroundings
i_, a_ . yes _ inside __ outer includes surroundings
i/, a/ . yes / inside // outer includes surroundings
i|, a| . yes | inside || outer includes surroundings
i&, a& . yes & inside && outer includes surroundings
i<punctuation>, a<punctuation> . yes <punctuation> inside <punctuation><punctuation> outer includes surroundings

Neovim text object that starts with g

text-object keymap mode repeater key text-object description normal mode operating-pending mode visual mode examples in normal mode
g[ or g] o,x +cursor to Left/right Around (only textobj with @,_) followed by textobject uses selected region vg]u will select until quotation
g< n,x . +go to start of textobj followed by textobject selects from cursor position vg>iu will select until end of quotation
g> n,x . +go to end of textobj followed by textobject selects form cursor position vg<iu will select until start of quotation
g. o,x Jump toLastChange won't jump uses selection vg. will select from cursor position until last change
ga n,x align followed by textobject/motion uses selected region vipga= will align a paragraph by =
gA n,x preview align (escape to cancel, enter to accept) followed by textobject/motion uses selected region vipgA= will align a paraghaph by =
gb n,x . Blackhole register followed by textobject/motion deletes selection vipgb will delete a paragraph without copying
gB n,x . Blackhole linewise textobject not required deletes line gB. will delete two lines without saving it in the register
gc o,x . comment (vgc in normal mode will select a block comment) won't jump uses selection vipgc will comment a paragraph
gC o,x . Block comment (supports selection vgC) won't jump reselects vgC will select current block of comment
gd o,x . Diagnostic (requires LSP so only works inside neovim) will find and jump will find and jump vgd will select the error
ge o,x Previous end of word uses cursor position uses selection vge will select from cursor position until previous end of word
gE o,x Previous end of WORD ('WORD' omits punctuation ) uses cursor position uses selection vge will select from cursor position until previous end of WORD
gf o,x . Next find will find and jump uses selection cgf??? will replace last search with ??? forwardly
gF o,x . Prev find will find and jump uses selection cgF??? will replace last search with ??? backwardly
gg o,x . First line uses cursor position uses selection vgg will select until first line
gh x . Git hunk (vscode selects from cursor position to end of diff) won't jump relesects vgh will select modified code
gi n,x Last position of cursor in insert mode will find and jump uses selection vgi will select until last insertion
gj o,x . GoDown when wrapped uses cursor position uses selection vgj will select one line down
gk o,x . GoUp when wrapped uses cursor position uses selection vgj will select one line up
gK o,x . column down until indent or shorter line won't jump uses selection vgK will select column from cursor position until indent or shorter line
gl o,x Last modified/yank/pasted (only vgm and dgm supported) won't jump reselects vgl will select last change
gL o,x . Url will find and jump relesects vgL will select url
gm n,x +Multiply (duplicate text) Operator won't jump uses selection vapgm will duplicate paragraph without replacing clipboard
gn o,x . +next (only textobj with @,_) followed by textobject uses selection vgniu will select from cursor position until next quotation
go o,x . RestOfWindow uses cursor position uses selection vgo will select from the cursorline to the last line in the window
gO o,x . VisibleWindow uses cursor position uses selection vgO will select all lines visible in the current window
gp o,x . +previous (only textobj with @,_) followed by textobject uses selection vgpiu will select from cursor position until previous quotation
gq n,x . +Format Selection/comments 80chars 80chars (LSP overrides it) requires a textobject applies to selection vipgq will format a paragraph
gr n,x . +Replace (with register) Operator followed by textobject/motion applies to selection viwgr will replace word with register (yanked text)
gs n,x . +Sort Operator followed by textobject/motion uses selection vipgs will sort paragraph
gS n,x . Join/Split lines inside braces will toggle inside {},[],() followed by operator vipgS will join selected lines in one line
gt o,x toNextQuotationMark uses cursor position uses selection vigt will select from cursor to next closing ', ", or `
gT o,x toNextClosingBracket uses cursor position uses selection vigT will select from cursor to next closing ], ), or }
gu n,x . +tolowercase requires a textobject applies to selection vipgu will lowercase a paragraph
gU n,x . +toUppercase requires a textobject applies to selection vipgU will uppercase a paragraph
gv n,x last selected will find and jump reselects vgv will select last selection
gw n,x . Split/Join comments/lines 80chars (preserves cursor position) requires a textobject applies to selection vipgw will split/join a paragraph limited by 80 characters
gx n,x . +Exchange (text) Operator followed by textobject/motion uses selection viwgx will exchange word with another viwgY
gz n,x . +Surround (followed by a=add, d=delete, r=replace) followed by textobject/motion (only add) uses selection (only add) viwgza" will add " to word, gzd" will delete ", gzr"' will replace "
g+ n,x . Increment number selects number under cursor uses selected number 3g+ will increment by 3
g- n,x . Decrement number selects number under cursor uses selected number g-.. will decrement by 3
g<Up> n,x Numbers ascending selects number under cursor uses selected number g<Up> will increase selected numbers ascendingly
g<Down> n,x Numbers descending selects number under cursor uses selected number g<Down> will decrease selected numbers descendingly
= n,x . autoindent followed by text-object uses selection == autoindents line
> n,x . indent right followed by text-object uses selection >> indents to right a line
< n,x . indent left followed by text-object uses selection << indents to left a line
$ o . End of line d$j. deletes two end-of-lines
% o Matching character: '()', '{}', '[]' won't jump won't jump d% deletes until bracket
0 o . Start of line d0 deletes until column 0
^ o . Start of line (non-blank) d^ deletes until start of line (after whitespace)
( o . Previous sentence d(. deletes until start of sentence (two times)
) o . Next sentence d). deletes until end of sentence (two times)
{ o . Previous empty line (before a paragraph) d{. deletes until next empty line (two times)
} o . Next empty line (after a paragraph) d}. deletes until previous empty line (two times)
[[ o . Previous section d[[ deletes until start of section
]] o . Next section d]] deletes until end of section
<CR> o . Continue Last Flash search d<CR><CR> deletes until next searched text
b o . Previous word db deletes until start of word
e o . Next end of word de deletes until end of word
f o . Move to next char df, deletes until a next ,
F o . Move to previous char dF, deletes until a previous ,
G o . Last line dG deletes until last line
R o . Treesitter Flash Search dR,<CR> deletes next treesitter region that contains ,
s o . Flash (search with labels in current window) ds,<CR> deletes until next ,
S o . Flash Treesitter dS<CR> deletes treesitter region under cursor position
t o . Move before next char dt deletes before next ,
T o . Move before previous char dT deletes before previous ,
w o . Next word dw. deletes 2 words
W o . Next WORD dW. deletes 2 WORDS

Neovim Motions and Operators

Motion/Operator keymap Mode Description repeater key requires textobject/motion keymap? (operators requires textobjects/motion) example when in normal mode
g[ n,x +Cursor to Left Around (only textobj with @,_) yes g]u go to end to quotation
g] n,x +Cursor to Rigth Around (only textobj with @,_) yes g[u go to start of quotation
g< n,x +go to start of textobj . yes g<iu go to start of quotation
g> n,x +go to end of textobj . yes g>iu go to end of quotation
g. n,x go to last change
g, n go forward in :changes
g; n go backward in :changes
ga n,x +align . yes gaip= will align a paragraph by =
gA n,x +preview align (escape to cancel, enter to accept) . yes gAip= will align a paragraph by =
gb n,x +Blackhole register . yes gbip delete a paragraph without copying
gB n,x Blackhole linewise . yes gB delete line
gc n,x +comment . yes gcip comment a paragraph
gd n go to definition
ge n,x go to previous endOfWord
gE n,x go to previous endOfWord
gf n go to file under cursor
gg n,x go to first line
gi n,x Last position of cursor in insert mode
gj n,x go to Down (when wrapped)
gJ n,x Join below Line .
gk n,x go to Up (when wrapped)
gm n,x +Multiply (duplicate text) Operator gmap duplicate paragraph withoug modifying clipboard
gM n,x go to mid line
gn n,x +next (only textobj with @,_) ;forward ,backward yes gniu go to next quotation
gp n,x +previous (only textobj with @,_) ;forward ,backward yes gpiu go to previous quotation
gq n,x +Format selection/comments . yes gqip format a paragraph
gr n,x +Replace (with register) Operator . yes griw replace word with register (yanked text)
gs n,x +Sort Operator . yes gsip sort paragraph
gS n,x SplitJoin args .
gt n go to next tab
gT n go to prev tab
gu n,x +toLowercase . yes guip lowercase a paragraph
gU n,x +toUppercase . yes gUip uppercase a paragraph
gv n,x last selected
gw n,x +SplitJoin coments/lines 80chars (keeps cursor position) . yes gwip split/join a paragraph by 80 characters
gx n,x +Exchange (text) Operator . yes gxiw exchange word with another gxiw
gy n Redo register (dot to paste forward) .
gY n Redo register (dot to paste backward) .
gz n,x +Surround (followed by a=add, d=delete, r=replace) . yes gzaiw" add ", gzd" delete ", gzr"' replace "
g+ n,x Increment number . yes 10g+ increment by 10
g- n,x Decrement number . yes g- decrement by 1
= n,x +autoindent . yes =ip autoindents paragraph
> n,x +indent right . yes >ip indents to right a paragraph
< n,x +indent left . yes <ip indents to left a paragraph
$ n,x End of line
% n,x Matching character: '()', '{}', '[]'
0 n,x Start of line
^ n,x Start of line (non-blank)
( n,x Previous sentence
) n,x Next sentence
{ n,x Previous empty line (paragraph)
} n,x Next empty line (paragraph)
[[ n,x Previous section
]] n,x Next section
<CR> n,x Continue Last Flash search
b n,x Previous word
e n,x Next end of word
f n,x Move to next char f
F n,x Move to previous char F
G n,x Last line
R x Treesitter Flash Search
s n,x Flash (search with labels in current window) <CR>
S n,x Flash Treesitter
t n,x Move before next char t
T n,x Move before previous char T
U n repeat :normal <keys> or :<commands>
w n,x Next word
W n,x Next WORD
Y n,x Yank until end of line

Neovim Space TextObjects/Motions

Keymap Mode Description repeater key
<leader>uU n Go to parent fold (only inside VSCode) .
<space><space>p n,x Paste after (secondary clipboard) .
<space><space>P n,x Paste before (secondary clipboard) .
<space><space>y n,x Yank (secondary clipboard)
<space><space>Y n,x Yank until EndOfLine (secondary clipboard)
<space><space>j n,x,o prev ColumnMove ;forward ,backward
<space><space>k n,x,o next ColumnMove ;forward ,backward

Neovim Mini.brackets

keymap mode description
[b/]b/[B/]B n,o,x prev/next/first/last buffer
[c/]c/[C/]C n,o,x prev/next/first/last comment
[x/]x/[X/]X n,o,x prev/next/first/last conflict (only inside neovim)
[d/]d/[D/]D n,o,x prev/next/first/last diagnostic (only inside neovim)
[f/]f/[F/]F n,o,x prev/next/first/last file
[i/]i/[I/]I n,o,x prev/next/first/last indent
[j/]j/[J/]J n,o,x prev/next/first/last jump
[l/]l/[L/]L n,o,x prev/next/first/last location (only inside neovim)
[o/]o/[O/]O n,o,x prev/next/first/last oldfile
[q/]q/[Q/]Q n,o,x prev/next/first/last quickfix (only inside neovim)
[t/]t/[T/]T n,o,x prev/next/first/last treesitter
[u/]u/[U/]U n,o,x prev/next/first/last undo
[w/]w/[W/]W n,o,x prev/next/first/last window (only inside neovim)
[y/]y/[Y/]Y n,o,x prev/next/first/last yank

Neovim Go to Previous / Next

Keymap Mode Description repeater key
gpc/gnc n,o,x previous/next comment ;forward ,backward
gpd/gnd n,o,x previous/next diagnostic ;forward ,backward
gpf/gnf n,x,o @fold ending/beginning (only inside neovim) ;forward ,backward
gph/gnh n,o,x previous/next git hunk (no supported on Windows10) ;forward ,backward
gpH/gnH n,o,x previous/next git hunk (supported on Windows10) ;forward ,backward
gpr/gnr n,o,x previous/next reference (only inside vscode) ;forward ,backward

Neovim Go to Previous_Start / Next_Start / Previous_End / Next_End of

Keymap Mode Description Repeater Key
gpaK / gnaK / gpeaK / gneaK n,o,x prev_start/next_start/prev_end/next_end of @block.outer ;forward ,backward
gpaq / gnaq / gpeaq / gneaq n,o,x prev_start/next_start/prev_end/next_end of @call.outer ;forward ,backward
gpaQ / gnaQ / gpeaQ / gneaQ n,o,x prev_start/next_start/prev_end/next_end of @class.outer ;forward ,backward
gpag / gnag / gpeag / gneag n,o,x prev_start/next_start/prev_end/next_end of @comment.outer ;forward ,backward
gpaG / gnaG / gpeaG / gneaG n,o,x prev_start/next_start/prev_end/next_end of @conditional.outer ;forward ,backward
gpaF / gnaF / gpeaF / gneaF n,o,x prev_start/next_start/prev_end/next_end of @function.outer ;forward ,backward
gpaL / gnaL / gpeaL / gneaL n,o,x prev_start/next_start/prev_end/next_end of @loop.outer ;forward ,backward
gpaP / gnaP / gpeaP / gneaP n,o,x prev_start/next_start/prev_end/next_end of @parameter.outer ;forward ,backward
gpaR / gnaR / gpeaR / gneaR n,o,x prev_start/next_start/prev_end/next_end of @return.outer ;forward ,backward
gpaA / gnaA / gpeaA / gneaA n,o,x prev_start/next_start/prev_end/next_end of @assignment.outer ;forward ,backward
gpa= / gna= / gpea= / gnea= n,o,x prev_start/next_start/prev_end/next_end of @assignment.lhs ;forward ,backward
gpa# / gna# / gpea# / gnea# n,o,x prev_start/next_start/prev_end/next_end of @number.outer ;forward ,backward
gpaf / gnaf / gpeaf / gneaf n,o,x prev_start/next_start/prev_end/next_end of outer _function ;forward ,backward
gpah / gnah / gpeah / gneah n,o,x prev_start/next_start/prev_end/next_end of outer _htmlAttribute ;forward ,backward
gpak / gnak / gpeak / gneak n,o,x prev_start/next_start/prev_end/next_end of outer _key ;forward ,backward
gpaN / gnaN / gpeaN / gneaN n,o,x prev_start/next_start/prev_end/next_end of outer _number ;forward ,backward
gpau / gnau / gpeau / gneau n,o,x prev_start/next_start/prev_end/next_end of outer _quote ;forward ,backward
gpax / gnax / gpeax / gneax n,o,x prev_start/next_start/prev_end/next_end of outer _Hex ;forward ,backward
gpiB / gniB / gpeiB / gneiB n,o,x prev_start/next_start/prev_end/next_end of @block.inner ;forward ,backward
gpiq / gniq / gpeiq / gneiq n,o,x prev_start/next_start/prev_end/next_end of @call.inner ;forward ,backward
gpiQ / gniQ / gpeiQ / gneiQ n,o,x prev_start/next_start/prev_end/next_end of @class.inner ;forward ,backward
gpig / gnig / gpeig / gneig n,o,x prev_start/next_start/prev_end/next_end of @comment.inner ;forward ,backward
gpiG / gniG / gpeiG / gneiG n,o,x prev_start/next_start/prev_end/next_end of @conditional.inner ;forward ,backward
gpiF / gniF / gpeiF / gneiF n,o,x prev_start/next_start/prev_end/next_end of @function.inner ;forward ,backward
gpiL / gniL / gpeiL / gneiL n,o,x prev_start/next_start/prev_end/next_end of @loop.inner ;forward ,backward
gpiP / gniP / gpeiP / gneiP n,o,x prev_start/next_start/prev_end/next_end of @parameter.inner ;forward ,backward
gpiR / gniR / gpeiR / gneiR n,o,x prev_start/next_start/prev_end/next_end of @return.inner ;forward ,backward
gpiA / gniA / gpeiA / gneiA n,o,x prev_start/next_start/prev_end/next_end of @assignment.inner ;forward ,backward
gpi= / gni= / gpei= / gnei= n,o,x prev_start/next_start/prev_end/next_end of @assignment.rhs ;forward ,backward
gpi# / gni# / gpei# / gnei# n,o,x prev_start/next_start/prev_end/next_end of @number.inner ;forward ,backward
gpif / gnif / gpeif / gneif n,o,x prev_start/next_start/prev_end/next_end of inner _function ;forward ,backward
gpih / gnih / gpeih / gneih n,o,x prev_start/next_start/prev_end/next_end of inner _htmlAttribute ;forward ,backward
gpik / gnik / gpeik / gneik n,o,x prev_start/next_start/prev_end/next_end of inner _key ;forward ,backward
gpin / gnin / gpein / gnein n,o,x prev_start/next_start/prev_end/next_end of inner _number ;forward ,backward
gpiu / gniu / gpeiu / gneiu n,o,x prev_start/next_start/prev_end/next_end of inner _quote ;forward ,backward
gpix / gnix / gpeix / gneix n,o,x prev_start/next_start/prev_end/next_end of inner _Hex ;forward ,backward

File Explorer keymaps

Key Combination Description
a Create new file (path/to/file creates 2 folders and 1 file)
A Create new folder (path/to/somewhere creates 3 folders)
d delete file
gg focus first file
G focus last file
h Collapse list
j Move down
k Move up
l or enter open directory/file passing focus
o or space open without passing focus replacing current tab
O open without passing focus in a new tab
p paste file
q close sidebar visibility
r Rename file
R refresh file explorer
v Open selected file to the side and toggle sidebar visibility
x cut file
y copy file
za toggle expand
/ search
Down Focus down and preview file
Up Focus up and preview file
alt+j or shift+j Move focus down 10 times in list view
alt+k or shift+k Move focus up 10 times in list view
alt+l or shift+l Open and toggle sidebar visibility
<unmapped letter> find (by first <unmapped letter> of file/folder) and jump

Terminal keymaps

Key Combination Description
alt+c Copy selection in terminal
alt+v Paste in terminal
alt+y send sequence to open yazi
alt+r Scroll terminal to next command
alt+w Scroll terminal to previous command
alt+e Scroll terminal up
alt+d Scroll terminal down
alt+q Scroll terminal up by page
alt+a Scroll terminal down by page
alt+t Scroll terminal to top
alt+g Scroll terminal to bottom
alt+left Resize terminal pane left
alt+right Resize terminal pane right
alt+down Resize terminal pane down
alt+up Resize terminal pane up
alt+ctrl+r select from shell history
Up previous shell history
Down next shell history
ctrl+d exit signal
ctrl+c cancel signal
ctrl+r search shell history
ctrl+backspace delete word
Home jump to start of line (powershelll and bash only)
End jump to end of line (powershelll and bash only)
ctrl+left jump backward word (powershelll and bash only)
ctrl+right jump forward word (powershelll and bash only)
ctrl+alt+shift+? show shortcuts (powershelll only)
bind -P show shortcuts (bash only, emacs keybindings by default)

Suggestion keymaps

Key Combination mode Description
ctrl+i i Toggle suggestion details
ctrl+space i Toggle suggestion widget
ctrl+shift+space i Toggle parameter hints
ctrl+alt+space i Toggle suggestion focus
alt+j i Show next inline suggestion
alt+k i Show previous inline suggestion
alt+l i Commit inline suggestion
ctrl+j i Select next suggestion
ctrl+k i Select previous suggestion
ctrl+l i Accept selected suggestion
ctrl+d i Select next page in suggestion details
ctrl+u i Select previous page in suggestion details

Editor keymaps (keybindings.json)

Key Combination mode Description
ctrl+\ n Toggle panel (terminal) visibility
shift+space n Show whichkey menu (Windows, Linux, Mac)
alt+space n Show whichkey menu (Linux, Mac)
alt+. n Repeat most recent Whichkey action
alt+c i Copy
alt+v i Paste
jk i send Escape
alt+h i,x Send Escape
alt+j n Quick-open-menu select next
alt+k n Quick-open-menu select previous
alt+h n Type 10h
alt+j n Type 10gj
alt+k n Type 10gk
alt+l n Type 10l
alt+v n Type V
alt+s or left n Go to previous editor
alt+f or right n Go to next editor
alt+left or alt+down n Decrease view size
alt+right or alt+up n Increase view size
ctrl+h n Navigate to left window
ctrl+j n Navigate to down window
ctrl+k n Navigate to up window
ctrl+l n Navigate to right window
alt+q or shift+q n Close active editor
alt+r or shift+r n Format and save
ctrl+alt+left n,i,x select left word (on multi cursor)
ctrl+alt+right n,i,x select right word (on multi cursor)
h n Move cursor left ( Windows10 <number>h not supported )
j n Move cursor down ( Windows10 <number>j not supported )
k n Move cursor up ( Windows10 <number>k not supported )
l n Move cursor right ( Windows10 <number>l not supported)

Native neovim ctrl keys

Key Combination mode Description
ctrl+a n,v increase number under cursor
ctrl+b n,v scroll down by page
ctrl+e n,v scroll down by line
ctrl+d n,v scroll down by half page
ctrl+f n,v scroll up by page
ctrl+i n jump to next in :jumps
ctrl+o n jump to previous in :jumps
ctrl+r n redo (u to undo)
ctrl+u n,v scroll up by half page
ctrl+v n,v visual block mode
ctrl+w n,v See vscode-window-commands.vim
ctrl+x n,v decrease number under cursor
ctrl+y n,v scroll up by line
ctrl+/ n,v comment line

zsh keymaps

keymap description
<tab> show (dash/path) options or complete path
<tab><tab> enter completion menu
<esc><esc> tmux-copy-mode-like / normal-mode (inside neovim terminal)
vi<enter> open retronvim's neovim
y<enter> open yazi (changes directory on exit)
alt+o open yazi (even while writing commands)
alt+h enter vim mode
alt+j previous history and enter vim-mode
alt+k next history and enter vim-mode
alt+l complete suggestion and enter vim-mode
ctrl+r search history with fzf
ctrl+l clear screen
ctrl+alt+l clear screen (inside neovim terminal)

If Touchcursor Keyboard Layout Started

layer qwerty

@grl 1    2    3    4    5    6    7    8    9    0    -    =    bspc
tab  q    w    e    r    t    y    u    i    o    p    [    ]    \
@cap a    s    d    f    g    h    j    k    l    ;    '    ret
lsft z    x    c    v    b    n    m    ,    .    /    rsft
lctl lmet @alt           @spc           @sft rmet rctl

layer touchcursor (press and hold space to enter the layer)

_    f1   f2   f3   f4   f5   f6   f7   f8   f9   f10  f11  f12  _
_    @¿   @sh  @vi  _    @m🡠  @M↓  @m↓  @m↑  @M↑  @m🡪  _    _    _
_    del  spc  bspc @yaz @laz @🡠   @↓   @↑   @🡪   @ñ   _    _
_    @za  @zr  caps @cod @vim pgup home end  pgdn _    _
_    _    _              _              _    _    _

layer yazi-find (press and release space+f to enter the layer)

_    _    _    _    _    _    _    _    _    _    _    _    _    _
_    /^q  /^w  /^e  /^r  /^t  /^y  /^u  /^i  /^o  /^p  _    _    _
_    /^a  /^s  /^d  /^f  /^g  /^h  /^j  /^k  /^l  _    _    _
_    /^z  /^x  /^c  /^v  /^b  /^n  /^m  _    _    _    _
_    _    _              _              _    _    _
key description example / keymap
@grl tap: backtick/grave, hold and press 1 = qwerty layer, hold and press 2 = dvorak layer `+2 = dvorak
@cap tap for escape, hold for LeftCtrl cap+l = ctrl+l
@sft tap for backspace, hold for LeftShift RAlt+l = shift+l
@alt tap for middle click, hold for LeftAlt LAlt+l = LAlt+l
@spc tap for space, hold for touchcursor layer, release for qwerty layer space+jj = DownArrow + DownArrow
@yaz tap and release then press one key in yazi-find layer (timeout: 500ms) space+f l = jump to file
@sh open shell inside yazi space+w
@vim open with neovim inside yazi space+b
@vi open with $EDITOR inside yazi space+e
@cod open with vscode inside yazi space+v
@laz open lazygit inside yazi space+g
@za zoxide add current working directory inside yazi space+z
@zr zoxide remove current working directory inside yazi space+x
unicode ñ space+;
@¿ unicode ¿ space+q
@m🡠 mouse scrolling left space+t
@m🡪 mouse scrolling right space+p
@m↑ mouse scrolling up space+i
@m↓ mouse scrolling down space+u
@M↑ mouse fast scrolling up space+y
@M↓ mouse fast scrolling down space+p
spc space key space+s
bspc backspace key space+d
home home key space+s
end end key space+d
pgup pageup key space+s
pgdn pagedown key space+d
@🡠 left arrow key space+h
@↓ down arrow key space+j
@↑ up arrow key space+k
@🡪 right arrow key space+l
caps toggles capslock space+c

Terminal dependencies (optional)

RetroNvim extension is shipped with neovim, yazi and kanata binaries and neovim's extensions, zsh's extensions, and yazi's extensions as git-submodules

To install terminal dependencies after installing retronvim extension, open whichkey > +Install Dependencies > install <your package manager> > <your package manager> install lazygit startship zsh > relaunch vscode

Treesitter Installation (optional)

Text objects that has a @ prefix requires a treesitter parser, neovim version 0.10 or newer comes with treesitter parsers for c, lua, markdown. Install treesitter parser for your programming language with :TSInstall <your programming language> ( on Windows 10/11 :TSInstall requires scoop install zig )( on MacOS https://brew.sh installs gcc which is required by :TSInstall ).

Example: in normal mode type : to open vim-command-line then type TSInstall cpp

Tip: for new retronvim releases you need to install again all your the treesitter parsers

Tip: to make a clean tressitter parser installation remove the folder rm -rf ~/.vscode/extensions/yeferyv.retronvim-0.1.0/nvim/plugins/site/pack/deps/opt/nvim-treesitter/parser (on linux and mac), rm -r -force ~/.vscode/extensions/yeferyv.retronvim-0.1.0/nvim/plugins/site/pack/deps/opt/nvim-treesitter/parser (on Windows 10/11)

Vim Cheatsheets / Tutorials

Related projects