VI Shell
VI Shell
Agenda
Describe the background of vi Editor Use vi editor to:
Suggested Reading
Or if your really need to know about vi try Learning the vi Editor, 6th Edition from Oreilly.Com
What is vi ?
The visual editor on the Unix. Before vi the primary editor used on Unix was the line editor
User was able to see/edit only one line of the text at a time
The vi editor is not a text formatter (like MS Word, Word Perfect, etc.)
Vi History
Although other stories exist, the true one tells that vi was originally written by Bill Joy in 1976. Who is Bill Joy you ask?
Joy's prowess as a computer programmer is legendary, with an ofttold anecdote that he wrote the vi editor in a weekend. Joy denies this assertion.
He co-founded Sun Microsystems in 1982 and served as chief scientist until 2003.
Some Vi Ports
All Unix OSs MS-Dos Windows 3.x Windows 9x/2k/NT/XP OS/2 Macintosh Atari Amiga OpenVMS/Alpha OpenVMS/VAX
Characteristics of vi
The vi editor is:
a very powerful but at the same time it is cryptic It is hard to learn, specially for windows users
Vim equals Vi
The current iteration of vi for Linux is called vim
Vi Improved http://www.vim.org
Starting vi
Type vi <filename> at the shell prompt After pressing enter the command prompt disappears and you see tilde(~) characters on all the lines These tilde characters indicate that the line is blank
Vi modes
There are two modes in vi
When you start vi by default it is in command mode You enter the input mode through various commands You exit the input mode by pressing the Esc key to get back to the command mode
press Esc There is no harm in pressing Esc even if you are in command mode. Your terminal will just beep and/or or flash if you press Esc in command mode
There are different ways to exit when you are in the command mode
Moving Around
You can move around only when you are in the command mode Arrow keys usually works(but may not) The standard keys for moving cursor are:
Moving Around
w - to move one word forward b - to move one word backward $ - takes you to the end of line <enter> takes the cursor the the beginning of next line
Moving Around
- - (minus) moves the cursor to the first character in the current line H - takes the cursor to the beginning of the current screen(Home position) L - moves to the Lower last line M - moves to the middle line on the current screen
Moving Around
f - (find) is used to move cursor to a particular character on the current line
For example, fa moves the cursor from the current position to next occurrence of a
Moving Around
) - moves cursor to the next sentence } - move the cursor to the beginning of next paragraph ( - moves the cursor backward to the beginning of the current sentence { - moves the cursor backward to the beginning of the current paragraph % - moves the cursor to the matching parentheses
Moving Around
Control-d scrolls the screen down (half screen) Control-u scrolls the screen up (half screen) Control-f scrolls the screen forward (full screen) Control-b scrolls the screen backward (full screen).
Entering text
To enter the text in vi you should first switch to input mode
To switch to input mode there are several different commands a - Append mode places the insertion point after the current character i - Insert mode places the insertion point before the current character
Entering text
I - places the insertion point at the beginning of current line o - is for open mode and places the insertion point after the current line O - places the insertion point before the current line R - starts the replace(overwrite) mode
Editing text
x - deletes the current character d - is the delete command but pressing only d will not delete anything you need to press a second key
dw - deletes to end of word dd - deletes the current line d0 - deletes to beginning of line
Structure of vi command
The vi commands can be used followed by a number such as
n<command key(s)> For example dd deletes a line 5dd will delete five lines.
This applies to almost all vi commands This how you can accidentally insert a number of characters into your document
Hint, think about absolute vs relative path Type echo $PATH to see your PATH variable Try this ./myscript.sh <enter> The ./ mean right here in this directory!