| Code Editor / Code Editor Reference | |
A listing of vi commands currently implemented in Code Editor.
| Keystrokes | Description | 
|---|---|
| h l k j | character left, right; line up, down | 
| b w | word/token left, right | 
| ge e | end of word/token left, right | 
| 0 ^ $ | beginning, first, last character of line | 
| nG/:n ngg | line n, default the last, first | 
| B W | space-separated word left, right | 
| gE E | end of space-separated word left, right | 
| H M L | Top, middle, bottom of screen | 
| g0 gm | beginning, middle of screen line | 
| g^ g$ | first, last character of screen line | 
| fc Fc | next, previous occurrence of character c | 
| tc Tc | before next, previous occurrence of c | 
| Keystrokes | Description | 
|---|---|
| i a | insert before, after cursor | 
| I A | insert at beginning of first character, end of line | 
| gI (g + Capital I) | insert text in first column/go to first column | 
| o O | open a new line below, above the current line | 
| rc | replace character under cursor with c | 
| R | replace characters starting at the cursor | 
| cm | change text of movement command m | 
| cc or S | change current line | 
| C | change to the end of line | 
| Keystrokes | Description | 
|---|---|
| x X | delete character under (right), before (left) cursor | 
| dm | delete text of movement command m | 
| dd D | delete current line, to the end of line | 
| J gJ | join current line with next, without space | 
| :rd | delete range r lines | 
| Keystrokes | Description | 
|---|---|
| /s← ?s← | search forward, backward for s | 
| n or /← | repeat forward last search | 
| N or ?← | repeat backward last search | 
| # * | search backward, forward for complete word under cursor | 
| g# g* | same, but also find partial matches | 
| gd gD | local, global definition of symbol under cursor | 
| :rs/f /t/x | substitute f by t in range r; x: g -- all occurrences, c -- confirm changes | 
| Keystrokes | Description | 
|---|---|
| ym | yank the text of movement command m | 
| yy/:y or Y | yank current line into register | 
| :ry | yank r range of lines | 
| p P | put register after, before cursor position | 
| Keystrokes | Description | 
|---|---|
| u U | undo last command, restore last changed line | 
| . | repeat last changes | 
| .n | repeat last changes with count replaced by n | 
| Keystrokes | Description | 
|---|---|
| ~ | switch case and advance cursor | 
| g~m gum gUm | switch case, lc, uc on movement m | 
| Keystrokes | Description | 
|---|---|
| esc or ^] | abandon editing → command mode | 
| Keystrokes | Description | 
|---|---|
| mc | mark current position with mark c ∈ [a Z] | 
| 'c 'C | go to mark c in current, C in any file | 
| Keystrokes | Description | 
|---|---|
| :e f | edit file f, reload current file if no f | 
| :rw f | write range r to file f (current file if no f ) (:w, :w f) | 
| :q :q! | quit and confirm, quit and discard changes | 
| :wq or :x or ZZ | write to current file and exit | 
| :r f | insert content of file f below cursor | 
| :n | next file | 
| :p | previous file | 
| :n,kw >> file1 | append lines n-k into another file file1. | 
| Keystrokes | Description | 
|---|---|
| , ; | separates two line numbers, set to first line | 
| :n,m | lines n to m | 
| n | an absolute line number n | 
| . $ | the current line, the last line in file | 
| % * | entire file, visual area (exclude) | 
| 't | position of mark t | 
| /p/ ?p? | the next, previous line where p matches | 
| +n -n | +n, −n to the preceding line number | 
| Keystrokes | Description | 
|---|---|
| zo zc zO zC | open, close one fold; recursively | 
| [z ]z | move to start, end of current open fold | 
| zj zk | move down/up to start/end of next/previous fold | 
| zm zM | fold more, close all folds | 
| zr zR | fold less, open all folds |