Globala kommandon

  • :h[elp] nyckelord - visa hjälp för kommando "nyckelord"
  • :sav[eas] fil - spara fil som
  • :clo[se] - stäng nuvarande ruta
  • :ter[minal] - open a terminal window
  • K - öppna man page för ordet under markören
Tip Run vimtutor in a terminal to learn the first Vim commands.

Markörkontroller

  • h - flytta markören åt vänster
  • j - flytta markören åt höger
  • k - flytta markören uppåt
  • l - flytta markören neråt
  • gj - move cursor down (multi-line text)
  • gk - move cursor up (multi-line text)
  • H - flytta till toppen av skärmen
  • M - flytta till mitten av skärmen
  • L - flytta till botten av skärmen
  • w - hoppa framåt till starten av nästa ord
  • W - hoppa framåt till starten av nästa ord (orden kan innehålla skiljetecken)
  • e - hoppa framåt till slutet av nästa ord
  • E - hoppa framåt till slutet av nästa ord (orden kan innehålla skiljetecken)
  • b - hoppa bakåt till starten av föregående ord
  • B - hoppa bakåt till starten av föregående ord (orden kan innehålla skiljetecken)
  • ge - jump backwards to the end of a word
  • gE - jump backwards to the end of a word (words can contain punctuation)
  • % - flytta till matchande tecken (gäller följande par: '()', '{}', '[]' - använd :h matchpairs i vim för mer information)
  • 0 - hoppa till början av raden
  • ^ - hoppa till första icke-blanka tecknet på raden
  • $ - hoppa till slutet av raden
  • g_ - hoppa till sista icke-blanka tecknet på raden
  • gg - gå till första raden i dokumentet
  • G - gå till sista raden i dokumentet
  • 5gg or 5G - gå till rad 5
  • gd - move to local declaration
  • gD - move to global declaration
  • fx - hoppa till nästa förekomst av tecknet x
  • tx - hoppa till tecknet före nästa förekomst av tecknet x
  • Fx - hoppa till föregående förekomst av tecknet x
  • Tx - hoppa till tecknet efter föregående förekomst av tecknet x
  • ; - upprepa föregående kommando av typ f, t, F eller T
  • , - upprepa föregående kommando av typ f, t, F eller T, baklänges
  • } - hoppa till nästa paragraf (eller funktion/block av kod)
  • { - hoppa till föregående paragraf (eller funktion/block av kod)
  • zz - centrera markören på skärmen
  • zt - position cursor on top of the screen
  • zb - position cursor on bottom of the screen
  • Ctrl + e - flytta ner skärmen en rad (utan att flytta markören)
  • Ctrl + y - flytta upp skärmen en rad (utan att flytta markören)
  • Ctrl + b - flytta bakåt en hel skärm
  • Ctrl + f - flytta framåt en hel skärm
  • Ctrl + d - flytta framåt en halv skärm
  • Ctrl + u - flytta bakåt en halv skärm
Tip Skriv ett tal före ett markörkommando för att upprepa det. Till exempel: 4j flyttar ner 4 rader.

Insättning - sätta in/lägga till text

  • i - sätt in efter markören
  • I - sätt in på början av raden
  • a - sätt in (lägg till) efter markören
  • A - sätt in (lägg till) på slutet av raden
  • o - lägg till (öppna) en ny rad under nuvarande rad
  • O - lägg till (öppna) enny rad över nuvarande rad
  • ea - sätt in (lägg till) efter slutet av ordet
  • Ctrl + h - delete the character before the cursor during insert mode
  • Ctrl + w - delete word before the cursor during insert mode
  • Ctrl + j - begin new line during insert mode
  • Ctrl + t - indent (move right) line one shiftwidth during insert mode
  • Ctrl + d - de-indent (move left) line one shiftwidth during insert mode
  • Ctrl + n - insert (auto-complete) next match before the cursor during insert mode
  • Ctrl + p - insert (auto-complete) previous match before the cursor during insert mode
  • Ctrl + rx - insert the contents of register x
  • Ctrl + ox - Temporärt byt till normal-mode för att kunna ange ett normel-mode kommando x.
  • Esc or Ctrl + c - lämna insättningsläget

Redigering

  • r - byt ut ett tecken
  • R - replace more than one character, until ESC is pressed.
  • J - sammanfoga raden under med nuvarande rad med mellanslag mellan
  • gJ - sammanfoga raden under med nuvarande rad utan mellanslag mellan
  • gwip - flyt ihop paragrafen
  • g~ - switch case up to motion
  • gu - change to lowercase up to motion
  • gU - change to uppercase up to motion
  • cc - byt (ersätt) hela raden
  • c$ or C - byt (ersätt) till slutet av raden
  • ciw - byt (ersätt) ett helt ord
  • cw or ce - byt (ersätt) till slutet av ordet
  • s - tag bort tecken och ersätt med text
  • S - tag bort rad och ersätt med text (samma som cc)
  • xp - byt ut två tecken (klipp och klistra)
  • u - ångra
  • U - restore (undo) last changed line
  • Ctrl + r - gör om
  • . - upprepa föregående kommando

Markera text (visuellt läge)

  • v - starta visuellt läge, markera rader, utför sedan kommando (t.ex. y-kopiera)
  • V - starta radvist visuellt läge
  • o - flytta till andra änden av redan markerat område
  • Ctrl + v - starta visuellt blockläge
  • O - flytta till ett annat hörn av redan markerat block
  • aw - markera ett ord
  • ab - markera ett block med ()
  • aB - markera ett block med {}
  • at - a block with <> tags
  • ib - markera inre block med ()
  • iB - markera inre block med {}
  • it - inner block with <> tags
  • Esc or Ctrl + c - avsluta visuellt läge
Tip Instead of b or B one can also use ( or { respectively.

Visuella kommandon

  • > - flytta texten åt höger
  • < - flytta texten åt vänster
  • y - yank (copy) marked text
  • d - tag bort markerad text
  • ~ - byt till stora/små bokstäver
  • u - change marked text to lowercase
  • U - change marked text to uppercase

Register

  • :reg[isters] - visa alla registers innehåll
  • "xy - kopiera till register x
  • "xp - klistra in innehållet av register x
  • "+y - yank into the system clipboard register
  • "+p - paste from the system clipboard register
Tip Register förvaras i ~/.viminfo och kommer att laddas igen nästa gång vim startar om.
Tip Special registers:

0 - last yank
" - unnamed register, last delete or yank
% - current file name
# - alternate file name
* - clipboard contents (X11 primary)
+ - clipboard contents (X11 clipboard)
/ - last search pattern
: - last command-line
. - last inserted text
- - last small (less than a line) delete
= - expression register
_ - black hole register

Märken

  • :marks - visa en lista över märken
  • ma - spara nuvarande position i märke A
  • `a - hoppa till märke A
  • y`a - klistra in text vid märke A
  • `0 - go to the position where Vim was previously exited
  • `" - go to the position when last editing this file
  • `. - go to the position of the last change in this file
  • `` - go to the position before the last jump
  • :ju[mps] - list of jumps
  • Ctrl + i - go to newer position in jump list
  • Ctrl + o - go to older position in jump list
  • :changes - list of changes
  • g, - go to newer position in change list
  • g; - go to older position in change list
  • Ctrl + ] - jump to the tag under cursor
Tip To jump to a mark you can either use a backtick (`) or an apostrophe ('). Using an apostrophe jumps to the beginning (first non-blank) of the line holding the mark.

Macros

  • qa - record macro a
  • q - stop recording macro
  • @a - run macro a
  • @@ - rerun last run macro

Klipp och klistra

  • yy - kopiera en rad
  • 2yy - kopiera två rader
  • yw - kopiera tecken från nuvarande position till starten av nästa ord
  • yiw - kopiera till slutet av raden
  • yaw - kopiera ordet under markören och mellanslag före eller efter ordet
  • y$ or Y - kopiera till slutet av raden
  • p - klistra in urklippet efter markören
  • P - klistra in före markören
  • gp - put (paste) the clipboard after cursor and leave cursor after the new text
  • gP - put (paste) before cursor and leave cursor after the new text
  • dd - tag bort en rad
  • 2dd - tag bort två rader
  • dw - tag bort tecken från markören till början av nästa ord
  • diw - tag bort ordet under markören
  • daw - tag bort ordet under markören och mellanslag före eller efter ordet
  • :3,5d - delete lines starting from 3 to 5
Tip You can also use the following characters to specify the range:
e.g.

:.,$d - From the current line to the end of the file
:.,1d - From the current line to the beginning of the file
:10,$d - From the 10th line to the beginning of the file

  • :g/{pattern}/d - delete all lines containing pattern
  • :g!/{pattern}/d - delete all lines not containing pattern
  • d$ or D - tag bort till slutet av raden
  • x - tag bort tecken

Indent text

  • >> - indent (move right) line one shiftwidth
  • << - de-indent (move left) line one shiftwidth
  • >% - indent a block with () or {} (cursor on brace)
  • <% - de-indent a block with () or {} (cursor on brace)
  • >ib - indent inner block with ()
  • >at - indent a block with <> tags
  • 3== - re-indent 3 lines
  • =% - re-indent a block with () or {} (cursor on brace)
  • =iB - re-indent inner block with {}
  • gg=G - re-indent entire buffer
  • ]p - paste and adjust indent to current line

Avslutning

  • :w - skriv (spara) filen, men avsluta inte
  • :w !sudo tee % - skriv nuvarande fil med sudo
  • :wq or :x or ZZ - skriv (spara) och avsluta
  • :q - avsluta (fungerar inte om det finns osparade ändringar)
  • :q! or ZQ - avsluta och kassera alla ändringar
  • :wqa - skriv (spara) och avsluta i alla tabbar

Sök och ersätt

  • /pattern - sök efter mönster
  • ?pattern - sök baklänges efter mönster
  • \vpattern - 'väldigt magiskt' mönster: icke-alfanumeriska tecken räknas som särskilda regexsymboler (escape character behövs inte)
  • n - upprepa sökning i samma riktning
  • N - upprepa sökning i motsatt riktning
  • :%s/old/new/g - ersätt alla "old" med "new" i hela filen
  • :%s/old/new/gc - ersätt alla "old" med "new" i hela filen, med konfirmering för varje ord
  • :noh[lsearch] - stäng av färgmarkering av sökresultat

Sök i flera filer

  • :vim[grep] /pattern/ {`{file}`} - search for pattern in multiple files
e.g. :vim[grep] /foo/ **/*
  • :cn[ext] - jump to the next match
  • :cp[revious] - jump to the previous match
  • :cope[n] - open a window containing the list of matches
  • :ccl[ose] - close the quickfix window

Tabbar

  • :tabnew or :tabnew {page.words.file} - öppna en fil i en ny tabb
  • Ctrl + wT - flytta nuvarande fönster till en egen tabb
  • gt or :tabn[ext] - flytta till nästa tabb
  • gT or :tabp[revious] - flytta till föregåendetabb
  • #gt - flytta till tabb nummer #
  • :tabm[ove] # - flytta nuvarande tabb till den #e positionen (räknar från 0)
  • :tabc[lose] - stäng nuvarande tabb och alla dess fönster
  • :tabo[nly] - stäng alla tabbar förutom nuvarande
  • :tabdo command - kör kommando på alla tabbar (t.ex. :tabdo q - stänger alla öppna tabbar)

Working with multiple files

  • :e[dit] fil - öppna en fil i en ny buffer
  • :bn[ext] - gå till nästa buffer
  • :bp[revious] - gå till föregående buffer
  • :bd[elete] - tag bort buffer (stäng en fil)
  • :b[uffer]# - go to a buffer by #
  • :b[uffer] file - go to a buffer by file
  • :ls or :buffers - visa lista över alla öppna buffrar
  • :sp[lit] fil - öppna en fil i en ny buffer och dela fönstret horisontellt
  • :vs[plit] fil - öppna en fil i en ny buffer och dela fönstret vertikalt
  • :vert[ical] ba[ll] - edit all buffers as vertical windows
  • :tab ba[ll] - edit all buffers as tabs
  • Ctrl + ws - splitta fönster
  • Ctrl + wv - dela ett fönster vertikalt
  • Ctrl + ww - byt fönster
  • Ctrl + wq - stäng ett fönster
  • Ctrl + wx - exchange current window with next one
  • Ctrl + w= - make all windows equal height & width
  • Ctrl + wh - flytta till fönstret åt vänster (vertikal delning)
  • Ctrl + wl - flytta till fönstret åt höger (vertikal delning)
  • Ctrl + wj - flytta till fönstret nedanför (horisontell delning)
  • Ctrl + wk - flytta till fönstret ovanför (horisontell delning)
  • Ctrl + wH - make current window full height at far left (leftmost vertical window)
  • Ctrl + wL - make current window full height at far right (rightmost vertical window)
  • Ctrl + wJ - make current window full width at the very bottom (bottommost horizontal window)
  • Ctrl + wK - make current window full width at the very top (topmost horizontal window)

Diff

  • zf - manually define a fold up to motion
  • zd - delete fold under the cursor
  • za - toggle fold under the cursor
  • zo - open fold under the cursor
  • zc - close fold under the cursor
  • zr - reduce (open) all folds by one level
  • zm - fold more (close) all folds by one level
  • zi - toggle folding functionality
  • ]c - jump to start of next change
  • [c - jump to start of previous change
  • do or :diffg[et] - obtain (get) difference (from other buffer)
  • dp or :diffpu[t] - put difference (to other buffer)
  • :diffthis - make current window part of diff
  • :dif[fupdate] - update differences
  • :diffo[ff] - switch off diff mode for current window
Tip The commands for folding (e.g. za) operate on one level. To operate on all levels, use uppercase letters (e.g. zA).
Tip To view the differences of files, one can directly start Vim in diff mode by running vimdiff in a terminal. One can even set this as git difftool.