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.
|*||<Return>||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|
- 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
- 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|