vim

you can type "special" characters like newlines, CR, ESC, etc in the command line by pressing Ctrl-V first

you can take the output of any command and send it into a vim session

find . | vim - 

multiple windows

you can do everything from one vim session. commands to turn one vim session into multiple windows

 :e filename      - edit another file
 :split filename  - split window and load another file
 ctrl-w uparrow   - move cursor up a window
 ctrl-w ctrl-w    - move cursor to another window (cycle)
 ctrl-w_          - maximize current window
 ctrl-w=          - make all equal size
 10 ctrl-w+       - increase window size by 10 lines
 :vsplit file     - vertical split
 :sview file      - same as split, but readonly
 :hide            - close current window
 :only            - keep only this window open
 :ls              - show current buffers
 :b 2             - open buffer #2 in this window

* * *

    :Explore              to switch to explorer mode

    :%sort                to sort lines

    :%!xxd                to switch into hex mode
                          and when you done hit <esc> again and type
    :%!xxd -r             to exit from hex mode


    "zt"   puts the cursor line at the top
    "zb"   at the bottom 
    "z."   at the middle

another way to move to a line is using the "%" command with a count
for example "50%" moves you to halfway the file, "90%" goes to near the end


to show all strings, containing 'pattern'
   :g/pattern

to delete all strings, containing 'pattern'
   :g/pattern/d

go back in time
seconds, minutes, days, hours 
  :earlier 10s
  :earlier 10m
  :earlier 10h
  :earlier 10d  

go forward in time
seconds, minutes, days, hours
  :later 10s
  :later 10m
  :later 10h
  :later 10d

when you need to edit the file under root but you have opened the file as user: 

  :w ! sudo tee %

u                  undo last change (can be repeated) 
Ctrl-R             redo changes which were undone (undo the undos)

CTRL-E             (insert-mode) copy string below sign-by-sign 
CTRL-Y             (insert-mode) copy string above sign-by-sign 

CTRL-E             (normal-mode) scrolling down
CTRL-Y             (normal-mode) scrolling up   

CTRL-R {reg}       (insert mode) paste from reg
mouse middle       (insert mode) to paste from buff 
  
CTRL-I,CRTL-O      moving between positions in different files

Ctrl-X Ctrl-N      autocomplete forward
Ctrl-X Ctrl-P      autocomplete backward
Ctrl-X Ctrl-F      autocomplete file name fm current dir

folding

zc to fold block zo to unfold block zM to close all blocks zR to open all blocks :set list to display special symbols, with :set listchars=... displays unvisible symbols for example: :set listchars=eol:$,tab:>-,trail:~,extends:>,precedes:<

abbreviations

:ab xx yyyyy :unab abbr :ab to list currently defined abbreviations to avoid the abbreviation: type CTRL-V before the character that would trigger the abbreviation :e # if you edit two files