vi is a screen-oriented text editor computer program.
Commands
Below is a very short list of the most useful commands:
| Command mode |
| ESC | |
| Movement command |
| h, j, k, l | left, down, up, right |
| w, W, b, B | forward, backward by word |
| H | top of the screen |
| M | middle of the screen |
| L | last line of the screen |
| Ctrl-F | forward one screen |
| Ctrl-B | backward one screen |
| Ctrl-D | forward half screen |
| Ctrl-U | backward half screen |
| 0 (zero), $ | start, end of current line |
| Inserting text |
| a | append after cursor |
| i | insert before cursor |
| A | append to end of line |
| I | insert at start of line |
| o | open a line below current line |
| O | open a line above current line |
| r | replace char |
| Delete text |
| x | current character |
| dh | previous character |
| dw | current word |
| db | previous word |
| dd | entire line |
| d$ | to end of line |
| d0 (zero) | to start of line |
| ndd | next n lines |
| Undelete |
| p | insert after cursor |
| P | insert before cursor |
|
| Goto line |
| :linenumber | |
| nG | Goto line n |
| :7 | Goto line 7 |
| Save and exit |
| ZZ | write if changes and quit |
| :wq | write and quit |
| :w filename | save to new file |
| :q! | quit vi |
| Search |
| /pattern <RETURN> | forward for a pattern |
| ?pattern <RETURN> | backward for a pattern |
| n | repeat previous search |
| N | repeat previous search in reverse direction |
| Search and replace |
| Example: | |
- Search from current line and replace first occurance
:s/search_string/replace_string/
- Search from current line and replace all matches
:s/search_string/replace_string/g
- Search from every line, replace confirmation (with [y]es)
:%s/search_string/replace_string/gc
:1,$s/search_string/replace_string/gc
- Search lines from 10 to 20
:10,20s/search_string/replace_string/g
|
| Undo |
| u | the latest change |
| U | all changes on a line |
| Concatenate |
| J | concatenate two lines |
|