vi is one of unix's fsckup. Sometimes in a emergency situation you are forced to deal with vi, and fscking unix admins refuse to install emacs. Here's your help.
To open a file named “myfile.txt”, type in the shell prompt: vi myfile.txt
To quit without saving, press: 【Esc:q!Enter ↵】
To save current file, press: 【Esc:wEnter ↵】
To quit vi, type: 【Esc:qEnter ↵】
Use arrow keys to move the cursor.
page up: 【Ctrl+b】
page down: 【Ctrl+f】
To insert text, move your cursor to the right place, then press i, then type your text. After you are done, type Esc to exit the insertion mode.
To delete text, move cursor to the right place and press x. (if x is inserted, that means you forgot to exit the insert mode. Type Esc to exit insertion mode. Type u to undo.)
When something doesn't work, or if you accidentally typed something and have no idea what is going on, try press Esc, then type u for undo. If a cat jumped onto your keyboard and you cannot exit vi, type the shell suspend command 【Ctrl+z】, which should get you back on the unix command prompt, then you can kill. (by first find out the pid by ps auwwx | grep vi, then kill -9 pid).
Congratulation! You've learned emergency vi.
It may be confusing, but with the above you can edit any text files with vi.
By default, the vi in Ubuntu 12.04 (as of ) is “vim.tiny”, a very basic vi-like vim. You should install full vim.
For how to install and other detail, see: Ubuntu Linux: vim Location and Versions.
Basic vi Commands
Remember, in vi, it has modes. At any one time, you are either in command mode or text insertion mode. To go to the command mode, just press Esc. To go into editing mode, press i.
Goto Insertion Mode
insert after cursor (append)
insert a new line
Undo ＆ Redo
beginning of line
end of line
end of file
delete 8 chars
delete 8 words
delete from cursor to end of line
delete current line
Copy ＆ Paste
copy current line
copy 3 lines
Note that when you delete a word or many words, the word is automatically put into the clipboard.
search forward for text “aa”
find next occurrence of current word
Find ＆ Replace
search ＆ replace ALL “aa” by “bb” in CURRENT LINE. “g” (global) means do it for all occurrences.
search ＆ replace ALL “aa” by “bb” in whole file. “c” means ask for confirmation before each replacement.
search ＆ replace “aa” by “bb” in line 20 to 30.
press 【Ctrl+v】 (called “visual block”), move cursor to select, then press 【I#Esc】 to insert # to all lines in the block.
To uncomment a block, do the same except just press 【x】 to kill a char.