Some productivity tips:
Smart movements
* and # search for the word under the cursor forward/backward.
w to the next word
W to the next space-separated word
b / e to the begin/end of the current word. (B / E for space separated only)
gg / G jump to the begin/end of the file.
%jump to the matching { .. } or ( .. ), etc..
{ / } jump to next paragraph.
Quick editing commands
I insert at the begin.
A append to end.
o / O open a new line after/before the current.
v / V visual mode (to select text!)
Shift+R replace text
C change remaining part of line.
Combining commands
Most commands accept a amount and direction, for example:
cW = change till end of word
3cW = change 3 words
BcW = to begin of full word,
change full word ciW = change inner word.
ci" = change inner between ".."
ci( = change text between ( .. )
4dd = delete 4 lines
3x = delete 3 characters.
3s = substitute 3 characters.
Useful programmer commands
r replace one character (e.g. rd replaces the current char with d).
~ changes case.
J joins two lines
Ctrl+A / Ctrl+X increments/decrements a number.
. repeat last command (a simple macro)
= indent line (specify a range, or use visual mode)
Macro recording
Press q[key] to start recording.
Then hit q to stop recording.
The macro can be played with @[key].
VIM as a file comparator:
Use '-d' switch to compare two files in VIM. This command splits the VIM screen vertically and shows the differences.
vim -d chmod-restore.pl chmod-restore1.pl