Vi

= Basics = i                  insert Crtl + c or Esc    exit insert mode ZZ or :x or :wr    save & exit
 * Modes:

set number 		Displays line numbers set nonumber 		Removes line numbers set autoindent 	Automatic indentation in insert mode set noautoindent	Removes the automatic indentation feature in insert mode set tabstop=3 		Sets the number of spaces by which the tab indents during editing syntax on 		Turns on highlighting of syntax syntax off 		Turns off highlighting of syntax set shiftwidth=4	The size of the indent, measured in spaces set list		List all Special characters except for white space.
 * EX Commands:

The EX commands (those that you key in after typing : in the Vi editor), which you want to execute whenever you start the Vi editor, can be saved in the .vimrc file in your home directory.
 * The .vimrc file

Searching
/string			Search for "string" Enter			Highlight the first keyword match N			Scroll through next keyword matches Shift + G		Go to bottom of the file Shift + N		Search from Bottom to top for keyword matches

= Intermediate =

:ab aman Amandeep Singh
 * Abbreviations can be set, which Vi will expand into full text whenever they are typed in edit mode

The abbreviation can be disabled by: :unab abbr :unab aman


 * Show Line Numbers:

To encrypt any file in the Vi editor, type the following in command mode and press the Enter key,then Enter a password twice.: :X
 * Encryption in Vi

To decrypt the encrypted file, open the file and type below command and hit the Enter key twice; then save and exit the Vi editor by typing :wq, the file will be saved in the decrypted format: :X


 * Inserting the contents of an existing file

vim filename +5
 * Opening Vi directly at a particular line


 * Opening Vi at the end of the file

vim + filename


 * Writing the buffer to a new file

You can now quit the original file by typing :q.

gg=G
 * Indenting the source code

Where gg indicates the beginning of the file, = is for indenting and G indicates the end of the file.

. (period) key to repeat the last change.
 * Repeating the last change

u          undo the last change. Ctrl-R     repeat a change that has been undone.
 * Undoing and redoing

%          can jump to curly brace or square bracket
 * Jumping to matching braces


 * Preventing auto-indent

You can then press  in the insert mode when you are ready to paste. After pasting, you can press  again to go to the auto-indent mode.

= Advanced =


 * Going to any line

50G
 * In the command mode to get the same result:

Typing just G in the command mode takes the cursor to the last line of the file and typing 1G takes the cursor to the beginning of the file.

Ctrl-a Ctrl-x
 * Incrementing or decrementing a number

~        To toggle the case of the character below which the cursor is positioned gUU      To change the case of the current line to upper case guu      To change the case of the current line to lower case g      To toggle the case of the current line g~$      To toggle the case of all characters from the cursor position to the end of the line
 * Changing the case of letters


 * Sorting within Vi


 * To sort lines and remove duplicate lines


 * Executing a filter command


 * 1)  ‘!’ symbol is used within the command line of Vi editor to execute an external program.
 * 2)  The line number 1 and the $ symbol in the above command can be replaced with any portion of the file with the numbers of the starting line and ending line of the particular portion.


 * To sort the file from the first line to the last line


 * The -u option with sort will keep only the unique lines and remove the duplicate lines.


 * To sort the lines starting from the contents of line number 5 to 15, give the following command:


 * Using tr within Vi


 * The following command will convert all the letters in the line numbers 10 to 20 to upper case:


 * Writing a portion of file, lines from 20 to 50 to a new file named newfile.txt:


 * Inserting the output of a command executed within the Vi editor


 * Most users are familiar with the method to execute a shell command within the Vi editor.

:r! date
 * Less known is the fact that you can insert the output of the command given within the Vi editor by placing a ‘.’ (period) before the exclamation mark.


 * Cursor movements

H     The cursor is positioned at the first line of the screen M     The cursor is positioned at the middle line of the screen L     The cursor is positioned at the last line of the screen

Ctrl-f    Scroll down by one screen Ctrl-b    Scroll up by one screen Ctrl-u    Scroll up by half a screen Ctlr-d    Scroll down by half a screen zz        Scroll the screen so that the current line appears at the middle of the screen, very useful for viewing the block of code associated with the current line.
 * Scrolling through a file

Let’s assume that you are editing a file which requires root access, instead of saving the file by taking many steps, you can save it straight away by using a combination of the tee and sudo commands: :w !sudo tee %1
 * Editing a file opened without sudo

di(     Deletes all characters within the parentheses di”      Deletes all characters within the quotes
 * Powerful delete commands

$vi -r filename
 * Recovering a file, after a crash, from the swap file of the file being edited:


 * References