Here is a complete list of all vi-mode control commands. As for the emacs mode commands, the sequences such as "[ A" are for ANSI standard terminal arrow keys and were added for ksh93h.
| Command | Meaning | 
|---|---|
| h | Move left one character | 
| [ D | Move left one character (ksh93h and newer) | 
| l | Move right one character | 
| space | Move right one character | 
| [ C | Move right one character (ksh93h and newer) | 
| w | Move right one word | 
| b | Move left one word | 
| W | Move to beginning of next nonblank word | 
| B | Move to beginning of preceding nonblank word | 
| e | Move to end of current word | 
| E | Move to end of current nonblank word | 
| 0 | Move to beginning of line | 
| [ H | Move to beginning of line (ksh93h and newer) | 
| ^ | Move to first nonblank character in line | 
| $ | Move to end of line | 
| [ Y | Move to end of line (ksh93h and newer) | 
| i | Insert text before current character | 
| a | Insert text after current character | 
| I | Insert text at beginning of line | 
| A | Insert text at end of line | 
| r | Replace one character (doesn't enter input mode) | 
| R | Overwrite existing text | 
| dh | Delete one character backwards | 
| dl | Delete one character forwards | 
| db | Delete one word backwards | 
| dw | Delete one word forwards | 
| dB | Delete one nonblank word backwards | 
| dW | Delete one nonblank word forwards | 
| d$ | Delete to end of line | 
| d0 | Delete to beginning of line | 
| D | Equivalent to d$ (delete to end of line) | 
| dd | Equivalent to 0d$ (delete entire line) | 
| C | Equivalent to c$ (delete to end of line, enter input mode) | 
| cc | Equivalent to 0c$ (delete entire line, enter input mode) | 
| s | Equivalent to xi (delete current character, enter input mode) | 
| S | Equivalent to cc (delete entire line, enter input mode) | 
| x | Equivalent to dl (delete character backwards) | 
| X | Equivalent to dh (delete character forwards) | 
| k or - | Move backward one line | 
| [ A | Move backward one line (ksh93h and newer) | 
| j or + | Move forward one line | 
| [ B | Move forward one line (ksh93h and newer) | 
| G | Move to line given by repeat count | 
| /string | Search forward for string | 
| ?string | Search backward for string | 
| n | Repeat search forward | 
| N | Repeat search backward | 
| f x | Move right to next occurrence of x | 
| F x | Move left to previous occurrence of x | 
| t x | Move right to next occurrence of x, then back one space | 
| T x | Move left to previous occurrence of x, then forward one space | 
| yh | Yank one character backwards | 
| yl | Yank one character forwards | 
| yb | Yank one word backwards | 
| yw | Yank one word forwards | 
| yB | Yank one nonblank word backwards | 
| yW | Yank one nonblank word forwards | 
| y$ | Yank to end of line | 
| y0 | Yank to beginning of line | 
| Y | Equivalent to y$ (yank to end of line) | 
| yy | Equivalent to 0y$ (yank entire line) | 
| u | Undo last editing change | 
| U | Undo all editing changes made to the line | 
| . (dot) | Repeat last editing command | 
| | | Move to absolute column position | 
| ; | Redo last character finding command | 
| , | Redo last character finding command, but in opposite direction | 
| % | Move to matching (, ), {, }, [, or ]  | 
| \ | Do filename/command/variable completion | 
| CTRL-I (TAB) | Do filename/command/variable completion (only for set -o viraw) (starting with ksh93h)  | 
| * | Do filename/command/variable expansion (onto command line) | 
| = | Do filename/command/variable expansion (as printed list) | 
| ~ | Invert ("twiddle") case of current character(s) | 
| _ | Append last word of previous command, enter input mode | 
| v | Run the hist command on the current line (actually, run the command hist -e ${VISUAL:-${EDITOR:-vi}}); usually this means run the full vi on the current line  | 
| CTRL-J | Same as ENTER | 
| CTRL-L | Start a new line and redraw the current line on it  | 
| CTRL-M | Same as ENTER | 
| CTRL-V | Print the version of the Korn shell | 
| # | Prepend # (comment character) to the line and send it. If the line starts with #, remove the leading # and all leading # characters after any embedded newlines  | 
| @ x | Insert expansion of alias _x as command mode input | 
Copyright © 2003 O'Reilly & Associates. All rights reserved.