Skip to main content
screenshot

terax-terminal preconfigured with neovim IDE + yazi builtin plugins + zsh builtin plugins + kanata keyboard layout


 
 Install 
 
   
 Zsh Keymaps 
 
   
 Keyboard-Layout 
 
 


Table of Contents
  1. Neovim keymaps
  2. Terminal
  3. If Touchcursor Keyboard Layout Started
  4. Installation
  5. Related projects

Neovim text object that starts with a/i

text-object keymap repeat action key finds and autojumps? text-object name description inner / outer
ia, aa . yes _argument whole argument/parameter of a function outer includes comma
ib, ab . yes _braces find the nearest inside of () [] {} outer includes braces
iB, aB . yes _brackets find the nearest inside of {} :help iB outer includes brackets
id, ad . yes diagnostic find errors, warnings, info or hints (only works inside neovim and requires LSP) outer same as inner
ie, ae . line from start to end of line without beginning whitespaces (line wise) outer includes begining whitespaces
if, af . yes _function_call like function args but only when a function is called outer includes the function called
ih, ah . yes _html_attribute attribute in html/xml like href="foobar.com" inner is only the value inside the quotes trailing comma and space
ii, ai . indent_noblanks surrounding lines with same or higher indentation delimited by blanklines outer includes line above
iI, aI . indent surrounding lines with same or higher indentation outer includes line above and below
ik, ak . yes _key key of key-value pair, or left side of a assignment outer includes spaces
il, al . yes +last go to last mini.ai text-object (which start with _) requires i/a example vilk
im, am . yes _number numbers, similar to <C-a> inner: only pure digits, outer: number including minus sign and decimal point
in, an . yes +next go to Next mini.ai text-object (which start with _) requires i/a example viNk
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
iq, aq . yes _quotes inside of ` ` or ' ' or " " outer includes openning and closing quotes
is, as . sentence sentence delimited by dots of blanklines :help sentence outer includes spaces
it, at . yes _tag inside of a html/jsx tag outer includes openning and closing tags
iu, au . _subword like iw, but treating -, _, and . as word delimiters and only part of camelCase outer includes trailing _,-, or space
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 whitespace ending
iW, aW . WORD from cursor to end of WORD (includes punctuation) outer includes whitespace ending
ix, ax . yes _Hex hexadecimal number or color outer includes hash #
i?, a? . yes _user_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<punctuation>, a<punctuation> . yes <punctuation> inside <punctuation><punctuation> outer includes surroundings

Neovim text-object/motions/operators that starts with g

keymap mode repeat action key repeat jump key text-object description normal mode = n = operator operating-pending mode = o = text-object visual mode = v = x = motion examples in normal mode
[c / ]c n,o,x . previous/next comment finds and jumps jumps uses selection v]c selects from cursor position until next comment
[d / ]d n,o,x . previous/next diagnostic finds and jumps jumps uses selection v]d selects from cursor position until next diagnostic
[h / ]h n,o,x . previous/next git hunk finds and jumps jumps uses selection v]h selects from cursor position until next git hunk
[i / ]i n,o,x . previous/next indent finds and jumps jumps uses selection v]i selects from cursor position until next indent
g[/g] n,o,x . +prev/+next textobj (only textobj with _ prefix) followed by text-object finds and jumps uses selection g]q next end of quotation
g\ / g| n,o,x . \ / | +end/+start of textobj (any inner/outer textobj) followed by text-object finds and jumps uses selection (\ / | to reselect) dg\iq delete until inner end of quotation (. to repeat)
qq ... q n,x . \ or @q + @@ repeats ... macro followed by text-object selects from cursor position qqviqq selects quotation (\ to repeat)
qw ... q n,x . | or @w + @@ repeats ... macro followed by text-object selects from cursor position qwdiqq delete inner quotation (| to repeat)
g;/g, n go backward/forward in :changes jumps g; go to last change
g. n,o,x jump to last change jumps won't jump uses selection vg. selects from cursor position until last change
ga n,x +align followed by textobject/motion uses selected region gaip= or vipga= aligns a paragraph by =
gb n,x . +blackhole register followed by textobject/motion deletes selection gbip or vipgb deletes a paragraph without copying
gB n,x . blackhole linewise text-object not required deletes line gB. deletes two lines without saving it in the register
gc n,o,x . +comment (vgc in normal mode will select a block comment) followed by textobject/motion won't jump uses selection gcip or vipgc comments a paragraph
gC n,o,x . block comment (supports selection vgC or just gC) select text-object under cursor won't jump reselects vgC selects current block of comment
gd n go to definition jumps gd go to definition of word under cursor
gD x git diff/hunk (vscode selects from cursor position to end of diff) won't jump reselects vgD selects modified code
ge/gE n,o,x previous end of word/WORD (WORD omits punctuation) jumps uses cursor position uses selection vge selects from cursor position until previous end of word
gf n,x go to file under cursor jumps uses selection gf open in a tab the path under cursor
gg/G n,o,x . first/last line jumps uses cursor position uses selection vgg selects until first line
gi n,x last position of cursor in insert mode finds and jumps uses selection vgi selects until last insertion
gj/gk n,o,x . go down/up when wrapped jumps uses cursor position uses selection vgj selects one line down
gJ n,x . join below lines joins uses selection vgJ joins selected lines into one line
gm n,x +multiply (duplicate text) operator won't jump uses selection gmap or vapgm duplicates paragraph without replacing clipboard
gM n,x go to middle line jumps uses selection vgM selects until middle of the line
gp/gn n,o,x . prev/next find text-object not required finds and jumps uses selection cgn??? replaces last search with ??? forwardly
go x jsx/tsx comment (only inside neovim) uses selection vipgt comments out a paragraph with {/* */}
gq n,x . +format selection/comments 80chars (LSP overrides it) requires a textobject applies to selection gqip or vipgq formats a paragraph
gr n,x . +replace (with register) operator followed by text-object/motion applies to selection griw or viwgr replaces word with register (yanked text)
gs n,x . +sort Operator followed by text-object/motion uses selection gsip or vipgs sorts a paragraph
gS n,x . split/join arguments toggles inside {},[],() followed by operator vipgS joins selected lines in one line
gu/gU n,x . +to lowercase/uppercase requires a text-object applies to selection gUiw (neovim and cvim only) or viwgU uppercase a word
gv n,x last selected finds and jumps reselects vgv selects last selection
gw n,x . split/join comments/lines 80chars (keeps cursor position) requires a text-object applies to selection gwip or vipgw split/join a paragraph limited by 80 characters
gx n,x . +exchange (text) Operator followed by text-object/motion uses selection gxiw or viwgx exchanges word with another gxiw or viwgx or .
gy/gY n . redo register (dot to paste forward/bacward) paste gy..... paste deleted lines by history
g-/g+ n,x . decrement/increment number selects number under cursor uses selected number g+.. or 3g+ increments by 3
g<Up>/g<Down> n,x numbers ascending/descending selects number under cursor uses selected number g<Up> increases selected numbers ascendingly
= n,x . +autoindent followed by text-object uses selection == autoindents line
</> n,x . +indent left/right followed by text-object uses selection << indents to left a line
0/$ n,o,x . start/end of line jumps uses selection d$j. deletes two end-of-lines
^ n,o,x . start of line (non-blankline) jumps uses selection d^ deletes until start of line (after whitespace)
% n,o,x matching character: '()', '{}', '[]' finds and jumps finds and jumps d% deletes until bracket
(/) n,o,x . prev/next sentence jumps uses selection d(. deletes until start of sentence (two times)
{/} n,o,x . prev/next empty line (before a paragraph) jumps uses selection d{. deletes until next empty line (two times)
[[/]] n,o,x . prev/next section jumps uses selection d[[ deletes until start of section
b/w n,o,x . prev/next word jumps uses selection db deletes until start of word
B/W n,o,x . prev/next WORD jumps uses selection dW. deletes 2 WORDS
e/E n,o,x . end of word/WORD jumps uses selection de deletes until end of word
/ n,o,x . search with labels like flash.nvim jumps finds and jumps uses selection d/ then search then label to delete c/ to change v/ to select / to jump
f/F n,o,x . ;forward ,backward move to next/prev char (f forward, F backward for vscode-neovim) jumps uses selection df, deletes until a next ,
t/T n,o,x . ;forward ,backward move before next/prev char (t forward, T backward for vscode-neovim) jumps uses selection dt, deletes before next ,
s n,x . +surround (followed by a=add, d=delete, r=replace) followed by textobject/motion (only add) uses selection (only add) saiw" or viwsa" adds " to word, sd" deletes ", sr"' replaces "
U n,x U whichkey repeater (inside neovim repeats :<command> like macros) <s-space>gjUUU repeats next-git-change (:normal A,jkj end of line comma)
Y n,x yank until end of line uses selection v^Y yanks line
<space><space>p n,x . Paste after (secondary clipboard) uses selection viw<space><space>p replaces word with a second clipboard
<space><space>P n,x . Paste before (secondary clipboard) uses selection viw<space><space>P replaces word with a second clipboard
<space><space>y n,x yank (secondary clipboard) uses selection viw<space><space>y yanks word using the second clipboard
<space><space>Y n,x yank until end of line (secondary clipboard) uses selection v<space><space>Y yanks until end of line using the second clipboard

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)
nvim<enter> open retronvim's neovim IDE (<space> to open whichkey)
y<enter> open yazi (changes directory on exit)
alt+o or <esc>o open yazi (even while writing commands)
alt+h or <esc> enter vim-mode
alt+l complete inline/ghost suggestion
alt+j prev shell history and enter vim-mode
alt+k next shell history and enter vim-mode
Up prev shell history
Down next shell history
ctrl+r search history with fzf
ctrl+l clear screen
ctrl+alt+l clear screen (inside neovim terminal or vscode terminal)
ctrl+d exit signal
ctrl+c cancel signal

If Touchcursor Keyboard Layout Started

layer qwerty

@grl 1    2    3    4    5    6    7    8    9    0    -    =    @bsp
tab  q    w    @e   r    t    y    u    i    o    p    [    ]    ret
@cap a    @s   @d   f    g    @h   @j   @k   @l   @;   '    \
lsft ret  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  _
_    @W↑  del  @w↑  @clr @w🡠  @m🡠  @m↓  @m↑  @m🡪   _    _    _    _
_    @W↓  @bsp @w↓  spc  @w🡪  @🡠   @↓   @↑   @🡪   @yaz _    _
_    caps @¿   @ñ   mmid mlft mrgt pgup home end  pgdn _    _
_    _    _              _              _    _    _
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
@; tap for semicolon, hold for ctrl ;+click = OpenInNewTab (chrome)
@bsp backspace key space+s
@clr clear screen on any shell space+r
@w🡠 mouse scrolling left space+t
@w🡪 mouse scrolling right space+g
@w↑ mouse scrolling up space+e
@w↓ mouse scrolling down space+d
@W↑ mouse fast scrolling up space+q
@W↓ mouse fast scrolling down space+a
@m🡠 mouse cursor left space+y
@m↓ mouse cursor down space+u
@m↑ mouse cursor up space+i
@m🡪 mouse cursor right space+p
mmid mouse middle click space+c
mlft mouse left click space+v
mrgt mouse right click space+b
del delete key space+w
spc space key space+f
@🡠 left arrow key space+h
@↓ down arrow key space+j
@↑ up arrow key space+k
@🡪 right arrow key space+l
@yaz open yazi and cd on exit space+;
caps toggles capslock space+c
@¿ unicode ¿ space+v
@ñ unicode ñ space+b
home home key space+m
end end key space+,
pgup pageup key space+n
pgdn pagedown key space+.

Installation

Install RetroVim on any terminal or shell

  • Powershell (windows):

    irm pixi.sh/install.ps1 | iex
    pixi g install retrovim -c retronvim -c conda-forge
    
  • SSH/Bash/Zsh (linux/macos):

    curl -L pixi.sh/install.sh | sh
    pixi g install retrovim -c retronvim -c conda-forge
    
  • npm + any package manager:

    # brew   install bat eza font-fira-code-nerd-font fzf git kanata lazygit neovim ripgrep starship yazi zsh zsh-patina 7zip pixi
    # pixi g install bat eza font-fira-code-nerd-font fzf git kanata lazygit nvim   ripgrep starship yazi zsh zsh-patina 7zip      -c retronvim -c conda-forge -e retronvim
    
    npm install -g retrovim
    
  • pip + any package manager:

    # brew   install bat eza font-fira-code-nerd-font fzf git kanata lazygit neovim ripgrep starship yazi zsh zsh-patina 7zip pixi
    # pixi g install bat eza font-fira-code-nerd-font fzf git kanata lazygit nvim   ripgrep starship yazi zsh zsh-patina 7zip      -c retronvim -c conda-forge -e retronvim
    
    pip install retrovim
    

Plugins

  • RetroVim.conda is shipped with

  • RetroVim/nvim comes with an installer for

  • RetroVim/nvim searches for vscode extensions's snippets in ~/.*/extensions/*/snippets/*code-snippets (alphabetically first ~/.antigravity otherwise ~/.cursor otherwise ~/.vscode otherwise ~/.windsurf) and automatically adds them to mini.completion

    • if you see: No contains a valid JSON object then to fix it use biome linter usually it is extras commas or comments
    • if you see: File is absent or not readable then delete the file to make mini.snippet work
  • Touchcursor Keyboard Layout on MacOs requires zb install karabiner

  • terax on archlinux requires pacman -S webkit2gtk-4.1

  • terax on debian requires apt install webkit2gtk-4.1-dev

  • terax on linux requires chsh --shell /bin/zsh (sets zsh as default shell)

  • terax requires the setting Font family: FiraCode Nerd Font for icons support (pixi exec --channel retronvim --with font-fira-code-nerd-font -- firacode-nerdfont-installer to install firacode font)

Related projects

  • yeferyv/RetroNvim vscode extension with minimal whichkey, lazyvim, terax, yazi, zsh and kanata setup

  • yeferyv/dotfiles retronvim + hyprland setup

  • binvim neovim IDE written in rust (with copilot, agents, text-objects, whichkey ...)

  • terax agentic terminal + neovim-like IDE

Metadata

Release files for retrovim 0.0.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for retrovim 0.0.5
File Size Uploaded
retrovim-0.0.5.tar.gz 2.9 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for retrovim 0.0.5
File Interpreter ABI Platform
retrovim-0.0.5-py3-none-any.whl Python 3 none any Details

Total release size: 6.0 MB

Release files / retrovim-0.0.5.tar.gz

Download URL retrovim-0.0.5.tar.gz
Size 2.9 MB
Tags Source
SHA-256 checksum
How to use checksums
f19eafe6fe76401039b4a775b273b1238a67645cbb72da3b03dd07f787557abd
BLAKE2b-256 checksum
How to use checksums
f1a6c60ea101487d659b9fef86ef3613c63995162d9de17c500f177889528cb3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / retrovim-0.0.5-py3-none-any.whl

Download URL retrovim-0.0.5-py3-none-any.whl
Size 3.1 MB
Tags Python 3
SHA-256 checksum
How to use checksums
8156624ca98f4996faec0e154db939f997707a69f6acbd181e703e405b8e59a3
BLAKE2b-256 checksum
How to use checksums
165545f523a416ba4ac9050c771f493689e06eea39c6ac1b33712bfc67bb93c6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

This release

0.0.5 This release

2 release files

0.0.4

2 release files

0.0.3

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page