| % vi name | edit name at top |
| % vi +n name | ... at line n |
| % vi + name | ... at end |
| % vi -r | list saved files |
| % vi -r name | recover file name |
| % vi name ... | edit first; rest via :n |
| % vi -t tag | start at tag |
| Last line | Error messages, echoing input to : / ? and !, feedback about i/o and large changes. |
| @ lines | On screen only, not in file. |
| ~ lines | Lines past end of file. |
| ^x | Control characters, ^? is delete. |
| tabs | Expand to spaces, cursor at last. |
| Command | Normal and initial state. Others return here. ESC (escape) cancels partial command. |
| Insert | Entered by a i A I o O c C s S R. Arbitrary text then terminates with ESC character, or abnormally with interrupt. |
| Last line | Reading input for : / ? or !; terminate with ESC or CR to execute, interrupt to cancel. |
| new window size | : / ? [[ ]] ^F ^B ` ' |
|---|---|
| line/column number | z G | |
| scroll amount | ^D ^U |
| replicate insert | a i A I |
| repeat effect | most rest |
| dw | delete a word |
| de | ... leaving punctuation |
| dd | delete a line |
| 3dd | ... 3 lines |
| itextESC | insert text abc |
| cwnewESC | change word to new |
| easESC | pluralize word |
| xp | transpose characters |
| ESC | end insert or incomplete cmd |
| ^? | (delete or rubout) interrupts |
| ^L | reprint screen if ^? scrambles it |
| :w | write back changes |
| :wq | write and quit |
| :q | quit |
| :q! | quit, discard changes |
| :e name | edit file name |
| :e! | reedit, discard changes |
| :e + name | edit, starting at end |
| :e +n | edit starting at line n |
| :e # | edit alternate file |
| ^^ | synonym for :e # |
| :w name | write file name |
| :w! name | overwrite file name |
| :sh | run shell, then return |
| :!cmd | run cmd, then return |
| :n | edit next file in arglist |
| :n args | specify new arglist |
| :f | show current file and line |
| ^G | synonym for :f |
| :ta tag | to tag file entry tag |
| ^] | :ta, following word is tag |
| ^F | forward screenful |
| ^B | backward screenful |
| ^D | scroll down half screen |
| ^U | scroll up half screen |
| G | goto line (end default) |
| /pat | next line matching pat |
| ?pat | prev line matching pat |
| n | repeat last / or ? |
| N | reverse last / or ? |
| /pat+n | n'th line after pat |
| ?pat?-n | n'th line before pat |
| ]] | next section/function |
| [[ | previous section/function |
| % | find matching ( ) { or } |
| ^L | clear and redraw |
| ^R | retype, eliminate @ lines |
| zCR | redraw, current at window top |
| z- | ... at bottom |
| z. | ... at center |
| /pat/z- | pat line at bottom |
| zn. | use n line window |
| `` | previous context |
| '' | ... at first non-white in line |
| mx | mark position with letter x |
| `x | to mark x |
| 'x | ... at first non-white in line |
| H | home window line |
| L | last window line |
| M | middle window line |
| + | next line, at first non-white |
| - | previous line, at first non-white |
| CR | return, same as + |
| ^N | next line, same column |
| ^P | previous line, same column |
| LF | linefeed, same as ^N |
| ^ | first non white |
| 0 | beginning of line |
| $ | end of line |
| space | forward |
| ^H | backwards |
| h | same as ^H |
| fx | find x forward |
| Fx | f backward |
| tx | upto x forward |
| Tx | back upto x |
| ; | repeat last f F t or T |
| , | inverse of ; |
| | | to specified column |
| % | find matching ( { ) or } |
| w | word forward |
| b | back word |
| e | end of word |
| ) | to next sentence |
| } | to next paragraph |
| ( | back sentence |
| { | back paragraph |
| W | blank delimited word |
| B | back W |
| E | to end of W |
| ) | Forward s-expression |
| } | ... but don't stop at atoms |
| ( | Back s-expression |
| { | ... but don't stop at atoms |
| ^H | erase last character |
| ^W | erases last word |
| erase | your erase, same as ^H |
| kill | your kill, erase input this line |
| \ | escapes ^H, your erase and kill |
| ESC | ends insertion, back to command |
| ^? | interrupt, terminates insert |
| ^D | backtab over autoindent |
| ^^D | kill autoindent, save for next |
| 0^D | ... but at margin next also |
| ^Q | quote non-printing character |
| ^T | shiftwidth forward tab |
| a | append after cursor |
| i | insert before |
| A | append at end of line |
| I | insert before first non-blank |
| o | open line below |
| O | open above |
| rx | replace single char with x |
| R | replace characters |
| d | delete |
| c | change |
| < | left shift |
| > | right shift |
| ! | filter through command |
| = | indent for LISP |
| y | yank lines to buffer |
| C | change rest of line |
| D | delete rest of line |
| s | substitute chars |
| S | substitute lines |
| J | join lines |
| x | delete characters |
| X | ... before cursor |
| Y | yank lines |
| p | put back lines |
| P | put before |
| "x | put from buffer x |
| "xy | yank to buffer x |
| "xd | delete into buffer x |
| u | undo last change |
| U | restore current line |
| . | repeat last change |
| "dp | retrieve d'th last delete |
| % ex name | edit name, start at end |
| % ex +n name | ... at line n |
| % ex -t tag | start at tag |
| % ex -r | list saved files |
| % ex -r name | recover file name |
| % ex name | ... edit first; rest via :n |
| Command | Normal and initial state. Input prompted for by :. Your kill character cancels partial command. |
| Insert | Entered by a i and c. Arbitrary text then terminates with line having only . character on it or abnormally with interrupt. |
| Open/visual | Entered by o or v, terminates with q or two successive interrupts. |
| append | a | next | n | substitute | s |
|---|---|---|---|---|---|
| args | ar | number | nu | undo | u |
| change | c | open | o | version | ve |
| copy | co | preserve | pre | visual | vi |
| delete | d | p | write | w | |
| edit | e | put | pu | yank | ya |
| file | f | quit | q | window | z |
| global | g | read | re | escape | ! |
| insert | i | recover | rec | lshift | < |
| join | j | rewind | rew | print next | CR |
| list | l | set | se | resubst | & |
| mark | ma | shell | sh | rshift | > |
| move | m | source | so | scroll | ^D |
| n | line n | /pat | next with pat |
| . | current | ?pat | previous with pat |
| $ | last | x-n | n before x |
| + | next | x,y | x through y |
| - | previous | 'x | marked with x |
| +n | n forward | '' | previous context |
| % setenv TERM type | csh and all version 6 |
| $ TERM=type | sh in Version 7 |
| 2621 | 43 | adm31 | dw1 | i100 |
| 2645 | 733 | adm3a | dw2 | mime |
| 300s | 745 | c100 | gt40 | owl |
| 33 | act4 | dm1520 | gt42 | t1061 |
| 37 | act5 | dm2500 | h1500 | vt52 |
| 4014 | adm3 | dm3025 | h1510 |
| .exrc | place set's here in HOME directory |
|---|---|
| set x | enable option |
| set nox | disable option |
| set x=val | give value val |
| set | show changed options |
| set x? | show value of option x |
| autoindent | ai | supply indent |
|---|---|---|
| beautify | bf | discard nonprinting chars |
| ignorecase | ic | in scanning |
| lisp | ( ) { } are s-exp's | |
| list | print ^I for tab, $ at end | |
| magic | . [ * special in patterns | |
| number | nu | number lines |
| paragraphs | para | macro names which start ... |
| redraw | simulate smart terminal | |
| sections | sect | macro names ... |
| shiftwidth | sw | for < >, and input ^D ^T |
| showmatch | sm | to ) and } as typed |
| slowopen | slow | choke updates during insert |
| wrapscan | ws | around end of buffer? |
| wrapmargin | wm | automatic line splitting |
| ^ | beginning of line |
| $ | end of line |
| . | any character |
| \< | beginning of word |
| \> | end of word |
| [str] | any char in str |
| [^str] | ... not in str |
| [x-y] | ... between x and y |
| * | any number of preceding |