In-line editing provides the ability to edit the current or previous commands before executing them. There are three in-line editing modes available: emacs, gmacs, and vi. The emacs and gmacs modes are basically the same, except for the way Ctl-t is handled. The inline editing mode is specified by setting the EDITOR or VISUAL variables, or with the set o command. The editing window width is specified by the COLUMNS variable. For lines longer than the window width, a mark is displayed to notify position. The marks >, <, and * specify that the line extends to the right, left, or both sides of the window. Vi Input Mode Commands #, <Backspace> | delete previous character | Ctl-d | terminate the Korn shell | Ctl-v | escape next character | Ctl-w | delete previous word | Ctl-x, @ | kill the entire line | <Return> | execute current line | \ | escape next erase or kill character | Vi Motion Edit Commands [n]h, [n]<Backspace> | move left one character | [n]l, [n]<Space> | move forward one character | [n]b | move backward one word | [n]B | move backward one word; ignore punctuation | [n]w | move forward one word | [n]W | move forward one word; ignore punctuation | [n]e | move to end of next word | [n]E | move to end of next word; ignore punctuation | [n]fc | move forward to character c | [n]Fc | move backward to character c | [n]tc | move forward to character before character c | [n]Tc | move backward to character before character c | [n]; | repeat last f, F, t, or T command | [n], | repeat last f, F, t, or T command, but in opposite direction | 0 | move cursor to start of line | ^ | move cursor to first non-blank character in line | $ | move cursor to end of line | Vi Search/Edit History Commands [n]G | get last command (or command n) | [n]j, [n]+ | get next command from history file | [n]k, [n]?/span> | get previous command from history file | n | repeat last / or ? search | N | repeat last / or ? search, except in opposite direction | /string | search backward in history file for command that matches string | ?string | search forward in history file for command that matches string | Vi Text Modification Commands a | add text after current character | A | append text to end of current line | [n]cX, c[n]X | change current character up to cursor position defined by X | [n]dX, d[n] X | delete current character up to cursor position defined by X | [n]yX, y[n]X | copy current character up to cursor position defined by X into buffer | X | used to define ending cursor position for c, d, or y commands b | backwards to beginning of word | e | cursor to end of current word | w | cursor to beginning of next word | W B E | same as w b e, but ignore punctuation | 0 | before cursor to end of current line | $ | cursor to end of current line |
| C | change current character to end of line | D | delete current character through end of line | i | insert text left of the current character | I | insert text before beginning of line | [n]p | put previously yanked/deleted text after cursor | [n]P | put previously yanked/deleted text before cursor | [n]rc | replace current character with c | R | replace text from cursor to <ESCAPE> | S | delete entire line and enter input mode | yy | copy current line into buffer | [n]x | delete current character | [n]X | delete previous character | [n]. | repeat last text modification command | [n]~ | toggle case of current character | [n]_ | append last word of previous ksh command | \ | replace current word with filename that matches word*. For unique matches, append a / to directories and " " (space) for files. | Vi Other Edit Commands u | undo last text modification command | U | undo text modification commands on current line | [n]v | return output of fc e command | Ctl-l | redisplay current line | Ctl-j | execute current line | Ctl-m | execute current line | # | insert a # (comment) at beginning of current line | = | list files that match current word* | * | replace current word with files that match word* | @_c | insert value of alias c | Emacs/Gmacs In-Line Editor Commands Ctl-b | move left one character | Ctl-f | move right one character | Esc-b | move left one word | Esc-f | move right one word | Ctl-a | move to beginning of line | Ctl-e | move to end of line | Ctl-h | delete preceding character | Ctl-x | delete the entire line | Ctl-k | delete from cursor to end of line | Ctl-d | delete current character | Esc-d | delete current word | Ctl-w | delete from cursor to mark | Ctl-y | undo last delete (w/Esc-p) | Ctl-p | get previous command from history file | Ctl-n | get next command from history file | Ctl-o | execute current command line and get next command line | Ctl-rstring | search backward in history file for command that contains string | Ctl-c | change current character to upper case | Esc-c | change current word to upper case | Esc-l | change current character to lower case | Esc-p | save to buffer from cursor to mark | Esc-<SPACE>, Ctl-@ | mark current location | Ctl-l | redisplay current line | Ctl-]c | move cursor forward to character c | Ctl-xCtl-x | interchange the cursor and mark | erase | delete previous character | Esc-Ctl-h | delete previous word | Esc-h | delete previous word | Ctl-t | transpose current and next character (emacs) | Ctl-t | transpose two previous characters (gmacs) | Ctl-j | execute current line | Ctl-m | execute current line | Esc-< | get oldest command line | Esc-> | get previous command line | Esc-n | define numeric parameter n for next command (command can be Ctl-c, Ctl-d, Ctl-k, Ctl-n, Ctl-p, Ctl-r, Esc-., Ctl-]c, Esc-_, Esc-b, Esc-c, Esc-d, Esc-f, Esc-h, Esc-l, Esc-Ctl-h) | Esc-c | insert value of alias _c (c cannot be b, c, d, f, h, l, or p) | Esc-., Esc-_ | insert last word of previous command | Esc-Esc | replace current word with filename that matches word*. For unique matches, append a / to directories and " " (space) for files | Esc-= | list files that match current word* | Ctl-u | multiply parameter of next command by 4 | \ | escape next character | Ctl-v | display version of shell | Esc-# | insert a # (comment) at beginning of current line | |