Vim is a text editor that runs on a console or terminal windows.
Vim was created based on the Vi text editor. At the time Vi was created there were no graphical user interfaces which is why it relied on keyboard shortcut to perform the editor tasks.
There are several modes in which Vim operate:
h Move left j Move down k Move up l Move right 0 Move to the beginning of line $ Move to the end of line w Move to the next word b Move to the previous word e Move to the end of the next word <enter> Move cursor to next line + Move cursor to next line - Move cursor to previous line H Place cursor on top of screen M Place cursor on middle of screen L Place cursor on bottom of screen ^G Show filename and current line <nnn>G Go to line <nnn> gg Go to top of file G Go to bottom of file
^F Page forward ^B Page backward ^D Half Page down ^U Half Page up z <enter> Place current line to top of screen z. Place current line to center of screen z- Place current line to bottom of screen
i Insert a Insert (at next character position) o Open new line below s Substitute character c To change a character cw Change word c2b Change two previous words c$ Change text up to end of sentence c0 Change text from the beginning of sentence cc Change current line
:w <file_name> Write file as <file_name> :w Write file :q Quit file
r Replace character (without entering Edit mode) d To delete a character dw Delete word db Delete previous word dd Delete line 2dd Delete two lines x Delete character p Paste copied or deleted text y To copy a character yw Copy word y$ Copy text up to end of sentence yy Copy line 4yy Copy four lines J Join lines u Undo changes
/ Search forward ? Search backwards n Repeat search N Repeat search in opposite direction f<x> Find <x> character in current line F<x> Find <x> character in current line, search backwards t<x> Find <x> character in current line, place cursor in previous character T<x> Find <x> character in current line, search backwards, place cursor in next character ; Find next , Find next, backwards
:s/<old>/<new>/ Substitute first occurrence of string <old> with <new>, in current line :s/<old>/<new>/g Substitute all occurrences of string <old> with <new>, in current line :50,100s/<old>/<new>/g Substitute string in the specified range only :1,$s/<old>/<new>/g Substitute string in the specified range only :%s/<old>/<new>/g Substitute string in the entire file :%s/<old>/<new>/gc Substitute string in the entire file, ask for confirmation :g/<pattern>/s/<old>/<new>/g Find lines that contains the "pattern", substitute string in those lines :g/<pattern>/s//<new>/g Find lines that contains the "pattern", substitute the "pattern" with <new> in those lines
m<x> Set bookmark labeled with character <x> '<x> Go to bookmark <x>, at the beginning of the line `<x> Go to bookmark <x>, at the cursor position '' Go to the next bookmark, at the beginning of the line `` Go to the next bookmark, at the cursor position
:hide edit example.txt Open file "example.txt" :buffers Show opened files :ls Show opened files :buffer <n> Switch to file in buffer number <n> :buffer <filename> Switch to file <filename> :buffer <part-of-filename> Switch to file with the name that contains <part-of-filename> :bnext Switch to next file :bprevious Switch to previous file :bfirst Switch to first file :blast Switch to last file :bdelete <n> Close file in buffer number <n> :bdelete <filename> Close file <filename> :bdelete <part-of-filename> Close file with the name that contains <part-of-filename>