Skip to content

Keybindings

edgar edited this page Feb 25, 2026 · 4 revisions

Keybindings

Complete keybinding reference for jvim. Use :help inside jvim to see the built-in help.

Note: jvim supports vim-style count prefixes (e.g., 5j to move 5 lines, 3dd to delete 3 lines, d3d operator-count pattern).

Mode Category Key Action Remarks
Normal Count Prefix {N}motion Repeat motion N times e.g., 5j, 3w, 2b
Normal Count Prefix {N}G Go to line N e.g., 5G → line 5
Normal Count Prefix {N}dd Delete N lines Fold-aware
Normal Count Prefix d{N}d Delete N lines e.g., d3d
Normal Count Prefix {N}yy Yank N lines Fold-aware
Normal Count Prefix {N}x Delete N characters
Normal Count Prefix {N}p / {N}P Paste N times
Normal Count Prefix {N}J Join N times
Normal Movement h, Left Move left one column
Normal Movement j, Down Move down one line Skips folded lines
Normal Movement k, Up Move up one line Skips folded lines
Normal Movement l, Right Move right one column
Normal Movement w Move to start of next word
Normal Movement b Move to start of previous word
Normal Movement 0 Jump to beginning of line Column 0
Normal Movement $, End Jump to end of line
Normal Movement ^, Home Jump to first non-whitespace char
Normal Movement gg Jump to first line
Normal Movement G Jump to last line
Normal Movement % Jump to matching bracket {}/[]/()
Normal Movement PgDn, Ctrl+f Page down Full screen height
Normal Movement PgUp, Ctrl+b Page up Full screen height
Normal Movement Ctrl+d Half page down
Normal Movement Ctrl+u Half page up
Normal Movement Ctrl+e Scroll view down one line View only, cursor stays
Normal Movement Ctrl+y Scroll view up one line View only, cursor stays
Normal Movement Ctrl+g Show file info Line number, percentage
Normal Insert Entry i Insert at cursor position
Normal Insert Entry I Insert at first non-whitespace char
Normal Insert Entry a Append after cursor
Normal Insert Entry A Append at end of line
Normal Insert Entry o Open new line below Auto-indent; {/[ ending adds +4 spaces
Normal Insert Entry O Open new line above Auto-indent; {/[ ending adds +4 spaces
Normal Editing x Delete character at cursor
Normal Editing dd Delete entire line Yanked to clipboard
Normal Editing dw Delete word forward Including trailing spaces
Normal Editing d$ Delete from cursor to end of line
Normal Editing d0 Delete from cursor to beginning
Normal Editing cw Change word Delete word + enter insert mode
Normal Editing cc Change line Clear content + enter insert mode with indent
Normal Editing r{char} Replace character at cursor
Normal Editing J Join current line with next With space separator
Normal Editing u Undo
Normal Editing Ctrl+r Redo
Normal Editing . Repeat last edit command
Normal Clipboard yy Yank (copy) current line
Normal Clipboard p Paste after cursor/line Line yank → new lines; char yank → inline
Normal Clipboard P Paste before cursor/line Line yank → new lines; char yank → inline
Normal Folding za Toggle fold at cursor line JSON blocks and long strings (60+ chars)
Normal Folding zo Open fold at cursor line
Normal Folding zc Close fold at cursor line Finds enclosing block if not on fold start
Normal Folding zM Fold all top-level blocks Includes long string values
Normal Folding zR Unfold all
Normal Embedded JSON ej Open embedded JSON editor Edits JSON string value at cursor
Normal Search / Enter forward search mode
Normal Search ? Enter backward search mode
Normal Search n Jump to next match
Normal Search N Jump to previous match
Normal Visual v Toggle character-wise visual mode
Normal Visual V Toggle line-wise visual mode
Insert Input Any character Insert at cursor position
Insert Input Backspace Delete character before cursor At column 0: join with previous line
Insert Input Enter New line with auto-indent Between {}/[]: splits with proper indent
Insert Input Tab Insert 4 spaces
Insert Input }, ] Insert with auto-dedent Only when line before cursor is whitespace only
Insert Navigation Home Move to first non-whitespace char
Insert Navigation End Move to end of line
Insert Navigation Arrow keys Navigate Without leaving insert mode
Insert Exit Escape Return to normal mode
Visual Selection h/j/k/l Extend selection Arrow keys also work
Visual Selection w, b Extend selection by word
Visual Selection $, 0, ^ Extend to line boundaries
Visual Operator d Delete selection Char-wise (v) or line-wise (V)
Visual Operator y Yank (copy) selection
Visual Operator c Change selection Delete + enter insert mode
Visual Exit Escape Cancel selection Return to normal mode
Command Navigation :{num} Jump to line number JSONL mode: jumps to record number
Command Navigation :p{num} Jump to JSONL record number
Command Navigation :l{num} Jump to editor line number Bypasses JSONL record interpretation
Command Navigation :$ Jump to last line
Command File :w Save file Validates JSON before saving
Command File :w! Force save Skip JSON validation
Command File :w {file} Save as new file Tab for path completion
Command File :e {file} Open file Tab for path completion; ~ → home
Command File :n Next file Multi-file mode
Command File :N Previous file Multi-file mode
Command File :e# Alternate (previous) file
Command File :q Quit Warns if unsaved changes
Command File :q! Force quit Discard changes
Command File :wq Save and quit
Command File :wq! Force save and quit
Command File :x Save and quit Alias for :wq
Command Editing :fmt Reformat/prettify JSON Also :format
Command Editing :s/old/new/ Substitute first match Current line; see Substitute
Command Editing :s/old/new/g Substitute all matches Current line
Command Editing :%s/old/new/g Substitute entire file
Command Editing :N,Ms/old/new/g Substitute in line range
Command Other :help Toggle help panel
Command Other Tab Path completion For :e and :w; cycles through candidates
Command Other Up/Down Navigate command history
Command Other Escape Cancel command
Search Input Characters Build search pattern
Search Input Enter Execute search
Search Input Backspace Delete last character
Search Input Escape Cancel search
Search Input Up/Down Navigate search history
Search Modifier \j Force JSONPath mode Appended to pattern
Search Modifier \c Force case-insensitive Appended to pattern
Search Modifier \C Force case-sensitive Appended to pattern
Diff Navigation ]c Next diff hunk Wraps around
Diff Navigation [c Previous diff hunk Wraps around
Diff Panel Tab Switch left/right panel Active panel shown in title bar color
Diff Embedded JSON ej Open embedded JSON diff Both panels open simultaneously
Diff Ignore :ig <path> Ignore JSONPath in diff
Diff Ignore :ig Show ignored paths
Diff Ignore :ig! Clear all ignored paths
Diff Ignore :uig <path> Unignore JSONPath Tab to complete from ignored list

한국어 | Home

Clone this wiki locally