Yleiset

  • :h[elp] avainsana - näytä apu avainsanalle
  • :sav[eas] tiedosto - tallenna nimellä
  • :clo[se] - sulje nykyinen paneeeli
  • :ter[minal] - avaa terminaali ikkuna
  • K - avaa man-sivu kursorin alla olevalle sanalle
Tip Aja vimtutor terminaalissa oppiaksesti ensimmäiset Vim komennot.

Kursorin liike

  • h - siirrä kursori vasemmalle
  • j - siirrä kursori alas
  • k - siirrä kursori ylös
  • l - siirrä kursori oikealle
  • gj - siirrä kursori alas (monirivinen teksti)
  • gk - siirrä kursori ylös (monirivinen teksti)
  • H - siirry näytön yläosaan
  • M - siirry näytön keskelle
  • L - siirry näytön alaosaan
  • w - hyppää eteenpäin sanan alkuun
  • W - hyppää eteenpäin sanan alkuun (sanat voivat sisältää välimerkkejä)
  • e - hyppää eteenpäin sanan loppuun
  • E - hyppää eteenpäin sanan loppuun (sanat voivat sisältää välimerkkejä)
  • b - hyppää taaksepäin sanan alkuun
  • B - hyppää taaksepäin sanan alkuun (sanat voivat sisältää välimerkkejä)
  • ge - hyppää taaksepäin sanan loppuun
  • gE - hyppää taaksepäin sanan loppuun (sanat voivat sisältää välimerkkejä)
  • % - siirrä kursori merkin pariin (oletuksena tuetut parit: '()', '{}', '[]' - aja :h matchpairs vim:issä saadaksesi lisää tietoa)
  • 0 - hyppää rivin alkuun
  • ^ - hyppää rivin ensimmäiseen ei-tyhjään merkkiin
  • $ - hyppää rivin loppuun
  • g_ - hyppää rivin viimeiseen ei-tyhjään merkkiin
  • gg - mene tiedoston ensimmäiselle riville
  • G - mene tiedoston viimeiselle riville
  • 5gg or 5G - mene riville 5
  • gd - mene paikalliseen määrittelyyn
  • gD - mene globaaliin määrittelyyn
  • fx - hyppää seuraavaan merkin x esiintymään
  • tx - hyppää merkin x seuraavaa esiintymää edeltävään merkkiin
  • Fx - hyppää edelliseen merkin x esiintymään
  • Tx - hyppää merkin x edellistä esiintymää seuraavaan merkkiin
  • ; - toista edellinen f, t, F tai T liike
  • , - toista edellinen f, t, F tai T liike, takaperin
  • } - hyppää seuraavaan kappaleeseen (tai funktioon/lohkoon koodia editoidessa))
  • { - hyppää edelliseen kappaleeseen (tai funktioon/lohkoon koodia editoidessa))
  • zz - keskitä näyttö kursoriin
  • zt - sijoita kursori sivun yläosaan
  • zb - sijoita kursori sivun alaosaan
  • Ctrl + e - liikuta näyttöä yksi rivi alas (ilman että kursori liikkuu)
  • Ctrl + y - liikuta näyttöä yksi rivi ylös (ilman että kursori liikkuu)
  • Ctrl + b - siirrä näyttöä yksi sivu ylös (kursori viimeiselle riville)
  • Ctrl + f - siirrä näyttöä yksi sivu alas (kursori ensimmäiselle riville)
  • Ctrl + d - siirrä kursoria ja näyttöä 1/2 sivu alas
  • Ctrl + u - siirrä kursoria ja näyttöä 1/2 sivu ylös
Tip Anna kursorin liike komentoa ennen numero toistaaksesi sen useasti. Esimerkiksi, 4j siirtyy alas 4 riviä.

Syöttötila - tekstin syöttäminen/lisääminen

  • i - syötä kursorin eteen
  • I - syötä rivin alkuun
  • a - syötä (lisää) kursorin jälkeen
  • A - syötä (lisää) rivin loppuun
  • o - lisää (avaa) uusi rivi nykyisen rivin alle
  • O - lisää (avaa) uusi rivi nykyisen rivin yläpuolelle
  • ea - syötä (lisää) sanan loppuun
  • Ctrl + h - poista kursoria edeltävä merkki syöttytilassa ollessa
  • Ctrl + w - poista kursoria edeltävä sana syöttötilassa ollessa
  • Ctrl + j - lisää rivinvaihto kursin sijaintiin syöttytilassa ollessa
  • Ctrl + t - sisennä (siirrä oikealle) yhdellä shiftwidth-arvolla syöttytilassa ollessa
  • Ctrl + d - vähennä sisennystä (siirrä vasemmalle) yhdellä shiftwidth-arvolla syöttyötilassa ollessa
  • Ctrl + n - syötä (täydennä automaattisesti) seuraava osuma ennen kursoria syöttötilassa ollessa
  • Ctrl + p - syötä (täydennä automaattisesti) edellinen osuma ennen kursoria syöttötilassa ollessa
  • Ctrl + rx - syötä rekisterin x sisältö
  • Ctrl + ox - Siirry väliaikaisesti normaalitilaan ja syötä yksi normaalin tilan komento x.
  • Esc or Ctrl + c - poistu syöttötilasta

Muokkaaminen

  • r - korvaa yksi merkki.
  • R - korvaa useampi kuin yksi merkki, kunnes ESC on painettu.
  • J - liitä alla oleva rivi nykyiseen välilyönnillä
  • gJ - liitä alla oleva rivi nykyiseen ilman välilyöntiä
  • gwip - formatoi kappale
  • g~ - muuta kirjaimien koko liikkeen loppuun asti
  • gu - muuta pieniksi kirjaimiksi liikkeen loppuun asti
  • gU - muuta isoiksi kirjaimiksi liikeen loppuun asti
  • cc - muuta (korvaa) koko rivi
  • c$ or C - muuta (korvaa) rivin loppun asti
  • ciw - muuta (korvaa) koko sana
  • cw or ce - muuta (korvaa) sanan loppuun asti
  • s - poista merkki ja korvaa tekstillä
  • S - poista rivi ja kovaa tekstillä (sama kuin cc)
  • xp - vaihda kahden kirjaimen paikkaa (leikkaa ja liitä)
  • u - peru
  • U - palauta (peru) viimeksi muutettu rivi
  • Ctrl + r - tee uudelleen
  • . - toista viimeisin komento

Tekstin merkintä (visuaalinen tila)

  • v - käynnistä visuaalinen tila, merkitse alue, sitten aja komento (esim. y-nykäise)
  • V - käynnistä rivikohtainen visuaalinen tila
  • o - siirry merkityn alueen toiseen päähän
  • Ctrl + v - käynnistä lohkokohtainen visuaalinen tila
  • O - siirry lohkon toiseen kulmaan
  • aw - merkitse sana
  • ab - merkitse () lohko
  • aB - merkitse {} lohko
  • at - merkitse <> lohko
  • ib - merkitse () sisempi lohko
  • iB - merkitse {} sisempi lohko
  • it - merkitse <> sisempi lohko
  • Esc or Ctrl + c - poistu visuaalisesta tilasta
Tip b:n tai B:n sijasta voit myös käyttää (:a tai {:a.

Visuaaliset komennot

  • > - siirrä tekstiä oikealle
  • < - siirrä tekstiä vasemmalle
  • y - nykäise (kopioi) merkitty teksti
  • d - poista merkitty teksti
  • ~ - vaihda kirjaimien koko
  • u - muuta merkityn tekstin kirjaimet pieneksi
  • U - muuta merkityn tekstin kirjaimet isoiksi

Rekisterit

  • :reg[isters] - näytä rekisterien sisältö
  • "xy - nykäisen rekisteriin x
  • "xp - liitä rekisterin x sisältö
  • "+y - nykäisen järjestelmän leikepöydän rekisteriin
  • "+p - liitä järjestelmän leikepöydän rekisteristä
Tip Rekisterit ovat tallessa ~/.viminfo-tiedostossa ja ladataan uudestaan seuraavan käynnistyksen yhteydessä.
Tip Erikois rekisterit:

0 - viimeisin nykäsy
" - nimeämätön rekisteri, viimeisin poisto tai nykäsy
% - nykyisen tiedoston nimi
# - vaihtoehtoinen tiedoston nimi
* - leikepöydän sisältö (X11 ensisijainen)
+ - leikepöydän sisältö (X11 leikepöytä)
/ - viimeisin haku kaava
: - viimeisin komento
. - viimeisin syötetty teksti
- - viimeisin pieni (alle rivin) poisto
= - yhtälö rekisteri
_ - musta aukko rekisteri

Merkit ja sijainnit

  • :marks - lista merkeistä
  • ma - aseta nykyisen sijainti merkkiin A
  • `a - hyppää merkin A sijantiin
  • y`a - nykäise teksti merkin A sijaintiin asti
  • `0 - mene sijaintiin, jossa Vim edellisen kerran suljettiin
  • `" - mene sijaintiin, jossa viimeksi lähdit tiedostosta
  • `. - mene sijaintiin, jossa viimeisin muutos tehtiin tähän tiedostoon
  • `` - mene edellistä hyppyä edeltävään sijaintiin
  • :ju[mps] - listaa hypyt
  • Ctrl + i - mene uusimpaan sijaintiin hyppy listalla
  • Ctrl + o - mene vanhempaan sijantiin hyppy listalla
  • :changes - muutoslista
  • g, - mene uudempaan sijantiin muutoslistalla
  • g; - mene vanhempaan sijaintiin muutoslistalla
  • Ctrl + ] - hyppää kursorin alla olevaan tägiin
Tip Voit käyttää backtick- (`) tai heittomerkkiä (') hypätäksesi merkkiin. Heittomerkki hyppää merkin sisältämän rivin alkuun (ensimmäinen ei-tyhjä merkki).

Makrot

  • qa - tallenna makro a
  • q - lopeta makron tallennus
  • @a - aja makro a
  • @@ - aja viimeisin makro uudelleen

Leikkaa ja liitä

  • yy - nykäise (kopioi) rivi
  • 2yy - nykäise (kopioi) 2 riviä
  • yw - nykäise (kopioi) sanan merkit kursorin tämän hetkisestä sijainnista seuraavan sanan alkuun
  • yiw - nykäise (kopioi) kursorin alla oleva sana
  • yaw - nykäise (kopioi) kursorin alla oleva sana ja väliluönnit sen edessä ja takana
  • y$ or Y - nykäise (kopioi) rivin loppuun
  • p - laita (liitä) kursorin jälkeen
  • P - laita (liitä) kursoria ennen
  • gp - laita (liitä) kursorin jälkeen ja jätä kursori uuden tekstin perään
  • gP - laita (liitä) kursorin eteen ja jätä kursori uuden tekstin perään
  • dd - poista (leikkaa) rivi
  • 2dd - poista (leikkaa) 2 riviä
  • dw - poista (leikkaa) sanan merkit kursorin sijainnista seuraavan sanan alkuun
  • diw - poista (leikkaa) kursorin alla oleva sana
  • daw - poista (leikkaa) kursoin alla oleva sana ja välilyönti sen edestä tai takaa
  • :3,5d - poista rivit kolme - viisi
Tip Voit myös käyttää seuraavia merkkejä määritelläksesi alueen:
e.g.

:.,$d - Nykyiseltä riviltä tiedoston loppuun
:.,1d - Nykyiseltä riviltä tiedoston alkuun
:10,1d - Kymmenenneltä rivilä tiedoston alkuun

  • :g/{pattern}/d - poista kaikki rivit, joissa kaava esiintyy
  • :g!/{pattern}/d - poista kaikki rivit, joilla kaava ei esiinny
  • d$ or D - poista (leikkaa) rivin loppuun asti
  • x - poista (leikkaa) merkki

Tekstin sisennys

  • >> - sisennä (siirrä oikealle) yhdellä shiftwidth-arvolla
  • << - vähennä sisennystä (siirrä vasemmalle) yhdellä shiftwidth-arvolla
  • >% - sisennä () tai {} lohko (kursori sulkeella)
  • <% - vähennä sisennystä () tai {} lohkolle (kursori sulkeella)
  • >ib - sisennä sisempi () lohko
  • >at - sisennä lohko <> tägeillä
  • 3== - uudelleen sisennä kolme riviä
  • =% - uudelleen sisennä () tai {} lohko (kursori sulkeella)
  • =iB - uudelleen sisennä sisempi {} lohko
  • gg=G - uudelleen sisennä koko bufferi
  • ]p - liitä ja muokkaa sisennystä nykyiselle riville

Poistuminen

  • :w - kirjoita (tallenna) tiedosto, mutta älä poistu
  • :w !sudo tee % - kirjoite tiedosto sudolla
  • :wq or :x or ZZ - kirjoita (tallenna) ja poistu
  • :q - poistu (epäonnistuu, jos tiedostossa on tallentamattomia muutoksia)
  • :q! or ZQ - poiustu ja hylkää tallentamattomat muutokset
  • :wqa - kirjoita (tallenna) ja poistu kaikista välilehdistä

Etsi ja korvaa

  • /pattern - etsi kaavaa
  • ?pattern - etsi kaavaa taaksepäin
  • \vpattern - 'very magic' kaava: ei-alfanumeeriset merkit tulkitaan regex-symboleina (ei tarvetta escapelle)
  • n - toista haku samaan suuntaan
  • N - toista haku toiseen suuntaan
  • :%s/old/new/g - korvaa kaikki old → new koko tiedostossa
  • :%s/old/new/gc - korvaa kaikki old → new koko tiedostossa varmistuksella
  • :noh[lsearch] - poista korostus haku osumista

Etsi useasta tiedostosta

  • :vim[grep] /pattern/ {`{file}`} - etsi kaavaa useasta tiedostosta
e.g. :vim[grep] /foo/ **/*
  • :cn[ext] - hyppää seuraavaan osumaan
  • :cp[revious] - hyppää edelliseen osumaan
  • :cope[n] - avaa ikkuna nähdäksesi listan osumista
  • :ccl[ose] - sulje quickfix ikkuna

Välilehdet

  • :tabnew or :tabnew {page.words.file} - avaa tiedosto uudessa välilehdessä
  • Ctrl + wT - siirrä nykyinen jaettu ikkuna omaan välilehteen
  • gt or :tabn[ext] - siirry seuraavaan välilehteen
  • gT or :tabp[revious] - siirry edelliseen välilehteen
  • #gt - siirry välilehteen numero #
  • :tabm[ove] # - siirrä nykyinen välilehti #:teen sijaintiin (alkaen nollasta)
  • :tabc[lose] - sulje nykyinen välilehti ja sen kaikki ikkunat
  • :tabo[nly] - sulje kaikki muut paitsi nykyinen välilehti
  • :tabdo command - aja komento kaikissa välilehdissä (esim. :tabdo q - sulkee kaikki avatut välilehdet)

Usean tiedoston työstäminen

  • :e[dit] tiedosto - muokkaa tiedostoa uudessa bufferissa
  • :bn[ext] - mene seuraavaan bufferiin
  • :bp[revious] - mene edelliseen bufferiin
  • :bd[elete] - poista bufferi (sulje tiedosto)
  • :b[uffer]# - mene bufferiin numero #
  • :b[uffer] file - mene bufferiin tiedostonimellä
  • :ls or :buffers - listaa kaikki avoimet bufferit
  • :sp[lit] tiedosto - avaa tiedosto uudessa bufferissa ja jaa ikkuna
  • :vs[plit] tiedosto - avaa tiedosto uudessa bufferissa ja jaa ikkuna vertikaalisesti
  • :vert[ical] ba[ll] - muokkaa kaikkia buffereita vertikaalisina ikkunoina
  • :tab ba[ll] - muokkaa kaikki buffereita välilehtinä
  • Ctrl + ws - jaa ikkuna
  • Ctrl + wv - jaa ikkuna vertikaalisesti
  • Ctrl + ww - vaihda ikkunaa
  • Ctrl + wq - sulje ikkuna
  • Ctrl + wx - vaihda nykyinen ikkuna seuraavan kanssa
  • Ctrl + w= - tee kaikista ikkunoista yhtä korkeita ja leveitä
  • Ctrl + wh - siirrä kursori vasempaan ikkunaan (vertikaalisessa jaossa)
  • Ctrl + wl - siirrä kursori oikeaan ikkunaan (vertikaalisessa jaossa)
  • Ctrl + wj - siirrä kursori alempaan ikkunaan (horisontaalisessa jaossa)
  • Ctrl + wk - siirrä kursori ylempään ikkunaan (horisontaalisessa jaossa)
  • Ctrl + wH - tee nykyisestä ikkunasta koko terminaali-ikkunan korkuinen vasempaan reunaan (vasemmanpuoleisin pystyikkuna)
  • Ctrl + wL - tee nykyisestä ikkunasta koko terminaali-ikkunan korkuinen oikeaan reunaan (oikeanpuoleisin pystyikkuna)
  • Ctrl + wJ - tee nykyisestä ikkunasta koko terminaali-ikkunan levyinen alas (alin vaakaikkuna)
  • Ctrl + wK - tee nykyisestä ikkunasta koko terminaali-ikkunan levyinen ylös (ylin vaakaikkuna)

Diff

  • zf - määrittele taitos manuaalisesti seuraavaan liikkeeseen asti
  • zd - poista kursorin alla oleva taitos
  • za - avaa tai sulje kursorin alla oleva taitos
  • zo - avaa kursorin alla oleva taitos
  • zc - sulje kursorin alla oleva taitos
  • zr - avaa kaikkia taitoksia yhdellä tasolla
  • zm - sulje kaikki taitoksia yhdellä tasolla
  • zi - vaihda taitto ominaisuus päälle tai pois
  • ]c - hyppää seuraavan muutoksen alkuun
  • [c - hyppää edellisen muutoksen alkuun
  • do or :diffg[et] - hae erot (toisesta bufferista)
  • dp or :diffpu[t] - laita erot (toiseen bufferiin)
  • :diffthis - ota nykyinen ikkuna mukaan diffiin
  • :dif[fupdate] - päivitä erot
  • :diffo[ff] - sulje diff-tila nykyisestä ikkunasta
Tip Taitos komennot (esim. za) toimivat yhdellä tasolla. Kaikilla tasoilla toimiaksesi, käytä isoja kirjaimia (esim. zA.
Tip Katsoaksesi eroja tiedostojen välillä, voit käynnistää Vim:in diff tilassa vimdiff terminaalista. Tämän asettaa git difftool:ksi.