The default editor that comes with the UNIX operating system is called vi (visual editor).
To Start vi
- To use vi on a file, type in vi filename. If the file named filename exists, then the first page (or screen) of the file will be displayed; if the file does not exist, then an empty file and screen are created into which you may enter text.
| * | vi filename | edit filename starting at line 1 |
|---|---|---|
| vi -r filename | recover filename that was being edited when system crashed |
To Exit vi
- Usually the new or modified file is saved when you leave vi. However, it is also possible to quit vi without saving the file.
- Note: The cursor moves to bottom of screen whenever a colon (:) is typed. This type of command is completed by hitting the <Return> (or <Enter>) key.
| * | |
quit vi, writing out modified file to file named in original invocation |
|---|---|---|
| :wq<Return> | quit vi, writing out modified file to file named in original invocation | |
| :q<Return> | quit (or exit) vi | |
| * | :q!<Return> | quit vi even though latest changes have not been saved for this vi call |
Adding, Changing, and Deleting Text
- Unlike PC editors, you cannot replace or delete text by highlighting it with the mouse. Instead use the commands in the following tables.
- Perhaps the most important command is the one that allows you to back up and undo your last action. Unfortunately, this command acts like a toggle, undoing and redoing your most recent action. You cannot go back more than one step.
| * | u | UNDO WHATEVER YOU JUST DID; a simple toggle |
|---|
- The main purpose of an editor is to create, add, or modify text for a file.
Inserting or Adding Text
- The following commands allow you to insert and add text. Each of these commands puts the vi editor into insert mode; thus, the <Esc> key must be pressed to terminate the entry of text and to put the vi editor back into command mode.
| * | i | insert text before cursor, until <Esc> hit |
|---|---|---|
| I | insert text at beginning of current line, until <Esc> hit | |
| * | a | append text after cursor, until <Esc> hit |
| A | append text to end of current line, until <Esc> hit | |
| * | o | open and put text in a new line below current line, until <Esc> hit |
| * | O | open and put text in a new line above current line, until <Esc> hit |
Changing Text
- The following commands allow you to modify text.
| * | r | replace single character under cursor (no <Esc> needed) |
|---|---|---|
| R | replace characters, starting with current cursor position, until <Esc> hit | |
| cw | change the current word with new text, starting with the character under cursor, until <Esc> hit |
|
| cNw | change N words beginning with character under cursor, until <Esc> hit; e.g., c5w changes 5 words |
|
| C | change (replace) the characters in the current line, until <Esc> hit | |
| cc | change (replace) the entire current line, stopping when <Esc> is hit | |
| Ncc or cNc | change (replace) the next N lines, starting with the current line, stopping when <Esc> is hit |
Deleting Text
- The following commands allow you to delete text.
| * | x | delete single character under cursor |
|---|---|---|
| Nx | delete N characters, starting with character under cursor | |
| dw | delete the single word beginning with character under cursor | |
| dNw | delete N words beginning with character under cursor; e.g., d5w deletes 5 words |
|
| D | delete the remainder of the line, starting with current cursor position | |
| * | dd | delete entire current line |
| Ndd or dNd | delete N lines, beginning with the current line; e.g., 5dd deletes 5 lines |
Cutting and Pasting Text
- The following commands allow you to copy and paste text.
| yy | copy (yank, cut) the current line into the buffer | |
|---|---|---|
| Nyy or yNy | copy (yank, cut) the next N lines, including the current line, into the buffer | |
| p | put (paste) the line(s) in the buffer into the text after the current line |