Saturday, 27 April 2013

Cento 6/RHEL install Vim text editor and Vi key bindings in shell.

Vim editor is one of the best simple editors for Linux, being an offshoot of the original vi editor written by Bill Joy a while ago. Vi is now a standard piece of equipment for many Linux distros and is often installed by default. It is quite easy to use and although a little quirky at first for some, the quirks soon become de rigueur and you tend to miss them when using another editor. 

Vim is the enhanced version by Bram Moolenaar and you should use it in your Centos 6/RHEL desktop as it provides some useful extra features. 

There is also a wiki for vim which contains 1,599 pages & a photo gallery. This is also a good source of tips and thoughts on the ineffable power of vim. It has become something of a web standard and there are a considerable number of articles and tutorials on the subject all over the web.

To install it just use yum.

$ sudo yum -y install vim-enhanced

This gets you the necessary files including common etc with a graphic desktop (gvim) & console version being installed.

$ vi   

Terminal Vim
Graphical Gvim
Vim in the shell 

The first thing I'd recommend doing before anything else is to place the following line in the ~/bashrc file.

$ sudo vi ~/.bashrc                  

set -o vi

This will apply the vi key bindings to your bash shell and you can use them as you type out commands. So you will have the same two modes in the shell as you do in vim, Insert and Command.

In the shell by default you will be in insert mode so just type as normal.

Hit 'Esc' to go into command mode and use the vi commands in the shell, such as $ to go the end of the line or 0 to go to the beginning of the line.

More below 
  • b to go back one word
  • 2b to go back two words
  • dw to delete a word
  • dd to delete the entire line
  • d$ to delete to the end of the line (from cursor)
  • d0 to delete to the beginning of the line (from cursor)
  • w to go forward one word
To return back to insert mode type 'i' (as in vi) and you can
then use the terminal as normal.

Vim in vim

Using Vi or Vim, the basic commands you need to actually write files are 'i' to insert text and 'Esc ZZ' to save and exit.                    

In the command mode, you can move around the file, delete text, etc.

In the insert mode, you can insert text.

Changing mode from one to another

From command mode to insert mode type a/A/i/I/o/O ( see details below)

From insert mode to command mode type Esc (escape key)

Some useful commands for VIM

Text Entry Commands (Used to start text entry)

a Append text following current cursor position

A Append text to the end of current line

i Insert text before the current cursor position

I Insert text at the beginning of the cursor line

o Open up a new line following the current line and add text there

O Open up a new line in front of the current line and add text there

The following commands are used only in the commands mode.

Cursor Movement Commands

h Moves the cursor one character to the left

l Moves the cursor one character to the right

k Moves the cursor up one line

j Moves the cursor down one line

nG or :n Cursor goes to the specified (n) line

(ex. 10G goes to line 10)

^F (CTRl F) Forward screenful

^B Backward screenful

^f One page forward

^b One page backward

^U Up half screenful

^D Down half screenful

$ Move cursor to the end of current line

0 (zero) Move cursor to the beginning of current line

w Forward one word

b Backward one word

Exit Commands

:wq Write file to disk and quit the editor

:q! Quit (no warning)

:q Quit (a warning is printed if a modified file has not been saved)

ZZ Save workspace and quit the editor (same as :wq)

: 10,25 w temp

write lines 10 through 25 into file named temp. Of course, other line

numbers can be used. (Use :f to find out the line numbers you want.

Text Deletion Commands

x Delete character

dw Delete word from cursor on

db Delete word backward

dd Delete line

d$ Delete to end of line

d^ (d caret, not CTRL d) Delete to beginning of line

Yank (has most of the options of delete)-- VI's copy commmand

yy yank current line

y$ yank to end of current line from cursor

yw yank from cursor to end of current word

5yy yank, for example, 5 lines

Paste (used after delete or yank to recover lines.)

p paste below cursor

P paste above cursor

"2p paste from buffer 2 (there are 9)

u Undo last change

U Restore line

J Join next line down to the end of the current line

File Manipulation Commands

:w Write workspace to original file

:w file Write workspace to named file

:e file Start editing a new file

:r file Read contents of a file to the workspace

To create a page break, while in the insert mode, press the CTRL key

And l. ^L will appear in your text and will cause the printer to start a new page.

Other Useful Commands

Most commands can be repeated n times by typing a number, n, before

the command. For example 10dd means delete 10 lines.

. Repeat last command

cw Change current word to a new word

r Replace one character at the cursor position

R Begin overstrike or replace mode – use ESC key to exit

:/ pattern Search forward for the pattern

:? pattern Search backward for the pattern

n (used after either of the 2 search commands above to

continue to find next occurrence of the pattern.

:g/pat1/s//pat2/g replace every occurrence of pattern1 (pat1) with


Example :g/tIO/s//Ada.Text_IO/g

This will find and replace tIO by Ada.text_IO everywhere in the file.

:g/a/s// /g replace the letter a, by blank

:g/a/s///g replace a by nothing

note: Even this command be undone by u


Opening a New File

Step 1 type vim filename   (create a file named filename)

Step 2 type i   ( switch to insert mode)

Step 3 enter text (enter your Ada program)

Step 4 hit Esc key   (switch back to command mode)

Step 5 type :wq   (write file and exit vim)

Editing the Existing File

Step 1 type vim filename   (edit the existing file named filename)

Step 2 move around the file using h/j/k/l key or any appropriate command

h Moves the cursor one character to the left

l Moves the cursor one character to the right

k Moves the cursor up one line

j Moves the cursor down one line

nG or :n Cursor goes to the specified (n) line

(ex. 10G goes to line 10)

Step 3 edit required text (replace or delete or insert)

Step 4 hit Esc key (exit from insert mode if you insert or replace text)

Step 5 type :wq

1 comment:

  1. Until recently considered taboo amongst polite society, it is impossible to overestimate its impact on modern thought. Crossing many cultural barriers it still draws remarks such as 'I wouldn't touch it with a barge pole' and 'i'd rather eat wasps' from socialists, who are likely to form a major stronghold in the inevitable battle for hearts and minds. Keeping all of this in mind, in this essay I will examine the major issues. commands