normal mode
- [count]operation[count]{motion}
:q!
= quit without saving:x
= :wq == write and quitdd
orD
= delete lined7d
= delete the next 7 lines.
= repeat the last commandCTRL + o
= back to last cursor positionp
= insert (from register) / paste in line below cursorP
= paste obove cursor-:reg
= list registers"1p
= paste from register 1"+y
= copy into system clipboard"+p
= pate from system clipboardu
= undoCTRL + R
= redoi
= enter insert modev
= enter visual modey
= yank / copy what was selectedyy
= yank / copy line4yy
= yank 4 lines>>
= indent-<<
= unindent:E
= open file explorer (works only withset nocompatible
):bd
= buffer delete / close buffer:bn
= goto next buffer:bp
= previous buffer:ls
= list of buffers*
= Find word unter cursor-:%s/search/replace/g
g for global:%!column -t
spaces to columns$
= goto the end of the linex
= delete charater under cursorw
= goto next worddw
= delete next word0
= goto start of linez
ENTER
move view to line:terminal
Open Terminal in split view:set rightleft
right to left (exit with :set rightleft&):edit!
reload file without saving or:e!
:set nowrap
:set wrap
:set nu
Show line numbers. Reverse with nonu
–:setlocal cm=blowfish2
:X
h
j
k
l
= move cursor ( h: ← j: ↓ k: ↑ l: →:sp
= split screen (same file):sp filename
= open other file:vsp
= vertical splitCTRL + w CTRL + w
= switch between splits:hide
= close current window:only
= keep only this window:help holy-grail
= advanced help:set rightleft
= some fun
Search/Replace
R
= enter replace mode-/pattern
– search for pattern?pattern
– search backward for patternn
– repeat search in same directionN
– repeat search in opposite direction:%s/old/new/g
– replace all old with new throughout file:%s/old/new/gc
– replace all old with new throughout file with confirmations
insert mode
CTRL + n
CTRL + p
= Complete wordCTRL + x
CTRL + l
= Complete lineCTRL + r
= insert register80i
*
ESC
= insert 80 *5o
#
ESC
= insert 5 rows starting with #
:set ff=unix
= set to unix line endings- How to jump back to NERDTree from file in tab
ctrl-ww
INSERT
you can insert text from your host’s clipboard by pressing the right mouse button (default setting) or by pressing Shift + Ins. Note that this has the same effect as entering every character manually. So if you are using auto indentation in vim, this will very likely screw up your code.
To fix that, you can do the following:
Before pasting into vim, enable paste mode by entering :set paste
.Press I to enter insert mode. The status bar should say -- INSERT (paste) --
now.Press Shift
+ Insert
(The auto indentation of vim should not happen.)Press Esc to leave insert mode, and disable paste mode using :set nopaste
again.
How to delete all lines of file in Vim
Type gg
to move the cursor to the first line of the file, if it is not already there.Type dG
to delete all the lines.