Commands:
  ZZ                -- write out and exit
  75 i ! <Esc>      -- insert "!" 75 times
  75 a ! <Esc>      -- append "!" 75 times
  Ctrl-]            -- move to |hyperlink|
  Ctrl-O            -- come back from hyperlink

  Help:
    :help index       -- complete index of all Vim commands
    :help Ctrl-W      -- find help with window management command
    :help usr_toc.txt -- all user manuals breef look


  Word / file navigation (3):
    fh | 3fl        -- move cursor to the "h" letter of the current line
    f<Esc>          -- aborts search
    Fh | 3Fl        -- like above, but searches to the left
    tl | 3tl        -- like fh, but cursor stops before the letter
    Tl | 3Tl        -- like above, but searches to the left
    ge              -- moves to the previous end of the word
    $ | 5$          -- to the end of the line
    ^               -- to begin of the first word in line
    0               -- to begin of the line
    25%             -- moves you to the 1/4 of the file
    H               -- move cursor to the top line of the current window
    M               -- move cursor to the middle line of the current window
    L               -- move cursor to the bottom line of the current window
    Ctrl-G          -- get where you are in the file
    zt              -- like below, but to the top
    zz              -- moves context to the middle of the current cursor pos 
    zt              -- like above, but to the bottom
    *               -- finds word under cursor in the file
    #               -- same like above, but to the other direction
    /the\>          -- finds only words that ends in "the "
    /\<the\>        -- finds only " the " matches
    ``              -- go to the prev position (mark, mark -- pos before jump)
    Ctrl-O          -- go to the previous jump (mark)
    Ctrl-I          -- go to the next jump (mark)
    m[a-z]          -- set mark with letter name
    '[a-z]          -- move to the row with the mark
    `[a-z]          -- move to the row and column with the mark
    :set hlsearch   -- will highlight all matches
    :set ignorecase -- to ignore letter case during searches
    :set number     -- show line numbers
    :set nonumber   -- unshow line numbers
    :set ruler      -- show in the bottom right corner where is your cursor
    :marks          -- see all available marks
    :marks p        -- to see where mark are specified
    :marks pF       -- to see where several marks are specified


  Making small changes (4):
    d$              -- deletes to the end of the line
    cc              -- like dd, but changes line
    c$              -- changes all to the end of the line
    X               -- delete prev symbol
    D               -- delete to the end of the line
    C               -- change to end of the line
    s               -- change one character
    S               -- change a whole line
    r | 4rx         -- replace current symbol, not enters in insert mode
    .               -- repeat the change
    O | o           -- in visual mode goes to the other corner of selected
    y               -- yank operator. yw - yank word, y2w - yank 2 words
    Y | yy          -- yank whole line
    y$              -- yank to the end of the line
    iw | aw         -- Call to word text object. iw - "Inner word",
                       aw - "A word" (Try to use in visual mode or delete).
    daw             -- delete a word. You can use it even in a mid of the word
    is | as         -- Call to sentence text object. "as" includes space after
                       is - "Inner Sentence", as - "A Sentence"
    cis             -- change whole sentence
    R               -- enter in replace mode. backspace works like undo.
    ~               -- Change case of the character under cursor
    I               -- insert to the begin of the line
    A               -- append to the end of the line


  Editing more than one file (7):
    :edit foo.txt   -- opens other file instead of current
    :write          -- save current file delta
    :edit! foo.txt  -- force to discard your changes
    vim one.c two.c three.c -- open a sequence of files
    :next           -- switch to next file
    :next!          -- like above, but not save changes
    :wnext          -- like above, but save changes
    :args           -- see the files you started Vim with
    :previous
    :wprevious
    :last
    :first
    :2next
    :set autowrite  -- always write to modified files after switch
    :set noautowrite -- turn off write to modified files
    :args one.c six.c -- redefine the list of files without the need to
                         exit Vim and start it again
    :args!          -- abandon the changes
    Ctrl-^          -- back to previous file
    `.              -- jump to position where you did the last change
    "fyas           -- use f register for yank to in sentence
    "l3Y            -- yank three whole lines to the l register
    "fp             -- put register buffer to the cursor position
    "wdaw           -- delete text to register
    :write >> myfile -- append current file to another file. To append only
                        few lines do it in visual mode.
    vim -R file     -- open file in readonly mode. Can edit it by appending
                       ! to the write command
    vim -M file     -- do it to forbid making any changes in a file
    :saveas move.c  -- to save current file to the other file and start
                       edit other file


  Splitting windows (8). Skipped 8.07 about vimdiff:
    Always starts from Ctrl-W
    Ctrl-W h        -- to the left window
    Ctrl-W j        -- to the bottom window
    Ctrl-W l        -- to the top window
    Ctrl-W l        -- to the right window
    Ctrl-H H        -- move window to left
    Ctrl-H J        -- move window to bottom
    Ctrl-H K        -- move window to top
    Ctrl-H L        -- move window to right
    :qall           -- close all winfows
    :wall           -- write all changes
    :wqall          -- write and close all files
    :qall           -- close Vim and throw all changes
    vim -o|-O       -- open several files in split mode
    :[vertical] all -- open args files in split mode
    vimdiff one.c two.c -- open in diff mode
    :leftabove {cmd} -- left or above the current window
    :aboveleft {cmd} -- idem
    :rightbelow {cmd} -- right or below the current window
    :belowright {cmd} -- idem
    :topleft {cmd}  -- at the top or left of the Vim window
    :botright {cmd} -- at the bottom or right of the Vim window
    :tabedit        -- open another file in tabe mode
    gt              -- go to the next tab
    gT              -- go to the previous tab
    :tabonly        -- to close all other tabs


  Making big changes (10):
    q[a-z]          -- start and end record commands
    @[a-z]          -- execute recorded command
    @@              -- execute previous executed recorded command
    Example:
      qa        Start recording a macro in register a.
      ^         Move to the beginning of the line.
      i#include "<Esc>	Insert the string #include " at the beginning
                of the line.
      $         Move to the end of the line.
      a"<Esc>       Append the character double quotation mark (")
                to the end of the line.
      j         Go to the next line.
      q         Stop recording the macro.

    You can paste command records and edit them, than yank them to register
        again.
    You can append to a register by using uppercase letter. "aY "AY
    :s/x/y          -- substitute first occurrence on current line
    :s/x/y/g        -- substitute every occurence on the current line
    :%s             -- substitute on all lines
    :%s/x/y/c       -- ask about any substitution
    :%s/x/y/p       -- print out last line, that this command changes
    :s+one/two+one or two+ -- use "+" delimiter in substution
    Command ranges:
      :1,5s/this/that/g -- substitute on 1-5 lines. Line 5 is included
      :54s/this/that/   -- substitute on one line
      :.write otherfile -- write only current string to file
      :.,$s/yes/no      -- substitute in the lines from the cursor to the end
      :?^Chapter?,/^Chapter/s=grey=gray=g -- substitute in range between word
                                                 "Chapter"
      There is also offsets before and after the word
      :'t,'b            -- you can also use marks as the range borders
      :5                -- change current and next 4 lines

    :[range]global/{pattern}/{command} | g:
      Find a match for a pattern and execute command there.
      g+//+s/foobar/barfoo/g -- replace word in all lines with // (C++ style)
    Ctrl-V A        -- append text after visual block
    Ctrl-V $A       -- append text in the end of every string in visual blck
    Ctrl-V C        -- change text
    Ctrl-V ~        -- swap case
    Ctrl-V U        -- make uppercase
    Ctrl-V u        -- make lowercase
    Ctrl-V r        -- fill the whole block with one character
    :read file.txt  -- the file named "file.txt" will be inserted in cursor
                         place
    gUw             -- make word all uppercase
    guw             -- make word all lowercase 
    gUU             -- make whole line uppercase
    guu             -- make all line lowercase
    g~~             -- switch case in whole line
    :read !ls       -- read the contents of the current directory to the
                       cursor
    Ctrl-L          -- redrow the screen


  Clever tricks (12):
      
Hints:
  There is lowercase and uppercase marks. Uppercase marks are global, they
  can help you to switch between the files. Lowercase marks are local for
  one file.

