Globale kommandoer

  • :h[elp] søkeord - åpne hjelp for søkeord
  • :sav[eas] fil - lagre fil som
  • :clo[se] - lukk gjeldende rute
  • :ter[minal] - åpne et terminalvindu
  • K - åpne man-side for ord under markøren
Tip Kjør vimtutor i en terminal for å lære de første Vim-kommandoene.

Markørbevegelser

  • h - flytt markøren til venstre
  • j - flytt markøren ned
  • k - flytt markøren opp
  • l - flytt markøren til høyre
  • gj - move cursor down (multi-line text)
  • gk - move cursor up (multi-line text)
  • H - flytt til toppen av skjermen
  • M - flytt til midten av skjermen
  • L - flytt til bunnen av skjermen
  • w - hopp frem til begynnelsen av et ord
  • W - hopp frem til begynnelsen av et ord (ord kan inneholde tegnsetting)
  • e - hopp fremover til slutten av et ord
  • E - hopp frem til slutten av et ord (ord kan inneholde tegnsetting)
  • b - hopp bakover til begynnelsen av et ord
  • B - hopp bakover til begynnelsen av et ord (ord kan inneholde tegnsetting)
  • ge - hopp bakover til slutten av et ord
  • gE - hopp bakover til slutten av et ord (ord kan inneholde tegnsetting)
  • % - flytt til samsvarende tegn (standard støttede par: '()', '{}', '[]' - bruk :h matchpairs i vim for mer informasjon)
  • 0 - hopp til begynnelsen av linjen
  • ^ - hopp til det første ikke-blanke tegnet på linjen
  • $ - hopp til slutten av linjen
  • g_ - hopp til det siste ikke-blanke tegnet på linjen
  • gg - gå til den første linjen i dokumentet
  • G - gå til siste linje i dokumentet
  • 5gg or 5G - gå til linje 5
  • gd - flytt til lokal erklæring
  • gD - flytt til global erklæring
  • fx - hopp til neste forekomst av tegnet x
  • tx - hopp til før neste forekomst av tegnet x
  • Fx - hopp til forrige forekomst av tegnet x
  • Tx - hopp til etter forrige forekomst av tegnet x
  • ; - gjenta forrige f-, t-, F- eller T-bevegelse
  • , - gjenta forrige f-, t-, F- eller T-bevegelse, bakover
  • } - hopp til neste avsnitt (eller funksjon/blokk, når du redigerer kode)
  • { - hopp til forrige avsnitt (eller funksjon/blokk, når du redigerer kode)
  • zz - sentermarkør på skjermen
  • Ctrl + e - flytt skjermen én linje ned (uten å flytte markøren)
  • Ctrl + y - flytt skjermen opp en linje (uten å flytte markøren)
  • Ctrl + b - flytt tilbake en fullskjerm
  • Ctrl + f - flytt én fullskjerm fremover
  • Ctrl + d - flytt frem 1/2 en skjerm
  • Ctrl + u - flytt tilbake 1/2 en skjerm
Tip Prefiks en markørbevegelseskommando med et tall for å gjenta den. For eksempel flytter 4j fire linjer ned.

Innsettingsmodus - innsetting/legg til tekst

  • i - sett inn før markøren
  • I - sett inn på begynnelsen av linjen
  • a - sett inn (legg til) etter markøren
  • A - sett inn (legg til) på slutten av linjen
  • o - legg til (åpne) en ny linje under gjeldende linje
  • O - legg til (åpne) en ny linje over gjeldende linje
  • ea - sett inn (legg til) på slutten av ordet
  • Ctrl + h - slett tegnet før markøren under innsettingsmodus
  • Ctrl + w - slett ord før markøren under innsettingsmodus
  • Ctrl + j - begynn ny linje under innsettingsmodus
  • Ctrl + t - rykk inn (flytt til høyre) linje én skiftbredde under innsettingsmodus
  • Ctrl + d - fjern innrykk (flytt til venstre) linje én skiftbredde under innsettingsmodus
  • Ctrl + n - sett inn (autofullfør) neste treff før markøren under innsettingsmodus
  • Ctrl + p - sett inn (autofullfør) forrige treff før markøren under innsettingsmodus
  • Ctrl + rx - sett inn innholdet i register x
  • Ctrl + ox - Gå midlertidig inn i normalmodus for å gi en normalmoduskommando x.
  • Esc - avslutt innsettingsmodus

Editering

  • r - erstatt et enkelt tegn.
  • R - erstatt mer enn ett tegn, til ESC trykkes.
  • J - føy linjen under til den gjeldende med ett mellomrom
  • gJ - føy linjen under til den gjeldende uten mellomrom
  • gwip - flyt avsnitt
  • g~ - switch opp til bevegelse
  • gu - endre til små bokstaver opp til bevegelse
  • gU - endre til store bokstaver opp til bevegelse
  • cc - endre (erstatt) hele linjen
  • c$ or C - endre (erstatt) til slutten av linjen
  • ciw - endre (erstatt) hele ordet
  • cw or ce - endre (erstatt) til slutten av ordet
  • s - slett tegn og erstatt tekst
  • S - slett linje og erstatt tekst (samme som cc)
  • xp - transponer to bokstaver (slett og lim inn)
  • u - angre
  • U - gjenopprett (angre) sist endrede linje
  • Ctrl + r - gjør om
  • . - gjenta siste kommando

Markere tekst (visuell modus)

  • v - start visuell modus, merk linjer, og utfør deretter en kommando (som y-yank)
  • V - start linjevis visuell modus
  • o - flytt til andre enden av markert område
  • Ctrl + v - start visuell blokkeringsmodus
  • O - flytt til et annet hjørne av blokken
  • aw - merk et ord
  • ab - en blokk med ()
  • aB - en blokk med {}
  • at - en blokk med <>-tagger
  • ib - indre blokk med ()
  • iB - indre blokk med {}
  • it - indre blokk med <>-tagger
  • Esc - avslutt visuell modus
Tip stedet for b eller B kan man også bruke henholdsvis ( eller {).

Visuelle kommandoer

  • > - skift tekst til høyre
  • < - skift tekst til venstre
  • y - kopier merket tekst
  • d - slett merket tekst
  • ~ - bytte sak
  • u - endre markert tekst til små bokstaver
  • U - endre merket tekst til store bokstaver

Register

  • :reg[isters] - vis registrer innhold
  • "xy - kopier inn i register x
  • "xp - lim inn innholdet i register x
  • "+y - kopier inn i systemets utklippstavleregister
  • "+p - lim inn fra systemets utklippstavleregister
Tip Registrene blir lagret i ~/.viminfo, og vil bli lastet inn igjen ved neste omstart av vim.
Tip Spesielle registre:

0 - siste kopiering
" - ikke navngitte register, siste sletting eller kopi
% - nåværende filnavn
# - alternativt filnavn
* - utklippstavleinnhold (X11 primær)
+ - utklippstavleinnhold (X11 utklippstavle)
/ - siste søkemønster
: - siste kommandolinje
. - sist innsatt tekst
- - siste liten (mindre enn en linje) sletting
= - uttrykksregister
_ - svart hull register

Merker og posisjoner

  • :marks - liste over merker
  • ma - sett gjeldende posisjon for merke A
  • `a - hopp til posisjonen til merke A
  • y`a - kopier tekst fra posisjonen til merke A
  • `0 - gå til posisjonen der Vim tidligere ble avsluttet
  • `" - gå til posisjonen da du sist redigerte denne filen
  • `. - gå til posisjonen til den siste endringen i denne filen
  • `` - gå til posisjonen før siste hopp
  • :ju[mps] - liste over hopp
  • Ctrl + i - gå til nyere posisjon i hoppeoversikten
  • Ctrl + o - gå til eldre posisjon i hoppeoversikten
  • :changes - liste over endringer
  • g, - gå til nyere posisjon i endringslisten
  • g; - gå til eldre posisjon i endringslisten
  • Ctrl + ] - hopp til taggen under markøren
Tip For å hoppe til et merke kan du enten bruke en backtick (`) eller en apostrof ('). Ved å bruke en apostrof hopper du til begynnelsen (første ikke-blank) av linjen som holder merket.

Makroer

  • qa - ta opp makro a
  • q - stopp opptak av makro
  • @a - kjør makro a
  • @@ - kjør siste kjøring makro

Klipp og lim

  • yy - kopier en linje
  • 2yy - kopier 2 linjer
  • yw - kopier tegnene i ordet fra markørposisjonen til begynnelsen av neste ord
  • yiw - kopier ordet under markøren
  • yaw - kopier ordet under markøren og mellomrommet etter eller før det
  • y$ or Y - kopier til slutten av linjen
  • p - lim inn utklippstavlen etter markøren
  • P - lim inn før markøren
  • gp - lim inn utklippstavlen etter markøren og la markøren stå etter den nye teksten
  • gP - lim inn før markøren og la markøren stå etter den nye teksten
  • dd - slett (klipp ut) en linje
  • 2dd - slett (klipp ut) 2 linjer
  • dw - slett (klipp ut) tegnene i ordet fra markørposisjonen til begynnelsen av neste ord
  • diw - slett (klipp ut) ord under markøren
  • daw - slett (klipp ut) ord under markøren og mellomrommet etter eller før det
  • d$ or D - slett (klipp) til slutten av linjen
  • x - slett (klipp ut) tegn

Innrykk av tekst

  • >> - rykk inn (flytt til høyre) linje én skiftbredde
  • << - fjern innrykk (flytt til venstre) linje én skiftbredde
  • >% - rykk inn en blokk med () eller {} (markør på klammeparentes)
  • >ib - innrykk indre blokk med ()
  • >at - rykk inn en blokk med <>-tagger
  • 3== - rykk inn 3 linjer på nytt
  • =% - re-indent a block with () or {} (cursor on brace)
  • =iB - rykk inn indre blokk på nytt med {}
  • gg=G - innrykk hele bufferen på nytt
  • ]p - lim inn og juster innrykk til gjeldende linje

Avslutt

  • :w - skriv (lagre) filen, men ikke avslutt
  • :w !sudo tee % - skriv ut gjeldende fil med sudo
  • :wq or :x or ZZ - skriv (lagre) og avslutt
  • :q - avslutt (mislykkes hvis det er ulagrede endringer)
  • :q! or ZQ - avslutt og kast ulagrede endringer
  • :wqa - skriv (lagre) og avslutt på alle faner

Søk og erstatt

  • /pattern - søk etter mønster
  • ?pattern - søk bakover etter mønster
  • \vpattern - 'veldig magisk' mønster: ikke-alfanumeriske tegn tolkes som spesielle regex-symboler (ingen unnslipping nødvendig)
  • n - gjenta søk i samme retning
  • N - gjenta søk i motsatt retning
  • :%s/old/new/g - erstatt alle gamle med nye gjennom hele filen
  • :%s/old/new/gc - erstatt alle gamle med nye gjennom hele filen med bekreftelser
  • :noh[lsearch] - fjern utheving av søketreff

Søk i flere filer

  • :vim[grep] /pattern/ {`{file}`} - søk etter mønster i flere filer
e.g. :vim[grep] /foo/ **/*
  • :cn[ext] - hopp til neste kamp
  • :cp[revious] - hopp til forrige kamp
  • :cope[n] - åpne et vindu som inneholder listen over treff
  • :ccl[ose] - lukk hurtigreparasjonsvinduet

Faner

  • :tabnew or :tabnew {page.words.file} - åpne en fil i en ny fane
  • Ctrl + wT - flytt det gjeldende delte vinduet til sin egen fane
  • gt or :tabn[ext] - flytt til neste fane
  • gT or :tabp[revious] - flytt til forrige fane
  • #gt - flytt til fanenummer #
  • :tabm[ove] # - flytt gjeldende fane til #. posisjon (indeksert fra 0)
  • :tabc[lose] - lukk gjeldende fane og alle dens vinduer
  • :tabo[nly] - lukk alle faner bortsett fra den gjeldende
  • :tabdo command - kjør kommandoen på alle faner (f.eks. :tabdo q - lukker alle åpne faner)

Arbeid med flere filer

  • :e[dit] fil - rediger en fil i en ny buffer
  • :bn[ext] - gå til neste buffer
  • :bp[revious] - gå til forrige buffer
  • :bd[elete] - slett en buffer (lukk en fil)
  • :b[uffer]# - gå til en buffer etter indeks #
  • :b[uffer] file - gå til en buffer etter fil
  • :ls or :buffers - liste opp alle åpne buffere
  • :sp[lit] fil - åpne en fil i en ny buffer og delt vindu
  • :vs[plit] fil - åpne en fil i en ny buffer og vertikalt delt vindu
  • :vert[ical] ba[ll] - rediger alle buffere som vertikale vinduer
  • :tab ba[ll] - rediger alle buffere som faner
  • Ctrl + ws - delt vindu
  • Ctrl + wv - delt vindu vertikalt
  • Ctrl + ww - bytt vinduer
  • Ctrl + wq - avslutt et vindu
  • Ctrl + wx - bytt gjeldende vindu med neste
  • Ctrl + w= - gjør alle vinduer like høyde og bredde
  • Ctrl + wh - flytt markøren til venstre vindu (vertikal delt)
  • Ctrl + wl - flytt markøren til høyre vindu (vertikal delt)
  • Ctrl + wj - flytt markøren til vinduet under (horisontal delt)
  • Ctrl + wk - flytt markøren til vinduet over (horisontal delt)
  • Ctrl + wH - gjør gjeldende vindu i full høyde helt til venstre (vertikalt vindu lengst til venstre)
  • Ctrl + wL - gjør gjeldende vindu i full høyde helt til høyre (vertikalt vindu lengst til høyre)
  • Ctrl + wJ - gjør gjeldende vindu i full bredde helt nederst (nederste horisontale vindu)
  • Ctrl + wK - gjør gjeldende vindu i full bredde helt øverst (øverste horisontale vindu)

Diff

  • zf - definer manuelt en fold opp til bevegelse
  • zd - slett fold under markøren
  • za - skift fold under markøren
  • zo - åpne fold under markøren
  • zc - lukk fold under markøren
  • zr - reduser (åpne) alle folder med ett nivå
  • zm - fold mer (lukk) alle folder med ett nivå
  • zi - bytte brettefunksjonalitet
  • ]c - hopp til starten av neste endring
  • [c - hopp til starten av forrige endring
  • do or :diffg[et] - få (få) forskjell (fra annen buffer)
  • dp or :diffpu[t] - sett forskjell (til annen buffer)
  • :diffthis - gjør gjeldende vindu til en del av diff
  • :dif[fupdate] - oppdateringsforskjeller
  • :diffo[ff] - slå av diff-modus for gjeldende vindu
Tip Kommandoene for bretting (f.eks. za) fungerer på ett nivå. For å operere på alle nivåer, bruk store bokstaver (f.eks. zA).
Tip For å se forskjellene på filer, kan man starte Vim direkte i diff-modus ved å kjøre vimdiff i en terminal. Man kan til og med sette dette som git difftool.