vi Commands List
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 |