Vimin peruskäyttö
Vim on tehokas tekstieditori, mutta sen käyttö ei ole aluksi kovin selkeää. Tässä oppaassa käydään läpi Vimin peruskäyttö. Yksityiskohtaisemmin Vimin komentoja ja muuta tietoja löytyy artikkelista Vim.
Käynnistäminen
Vimillä tiedosto avataan muokattavaksi yksinkertaisesti komennolla
vim tiedosto
Jos haluat nopeasti muokata tiedostoa tietyltä riviltä alkaen, voit käyttää +N-valitsinta (jossa N on rivin numero tai tyhjä, jos haluat muokata viimeiseltä riviltä). Esimerkiksi seuraava komento aloittaa muokkaamisen riviltä 32:
vim +32 tiedosto
Voit myös aloittaa muokkauksen siltä riviltä, joka sisältää tietyn merkkijonon. Tämä tapahtuu valitsimella +/:
vim +/merkkijono tiedosto.txt
Toimintatilat
Vim käynnistyy aluksi komentotilaan, jossa tiedostoon ei voikaan kirjoittaa mitään. Sen sijaan eri näppäimillä saattaa olla omituiseltakin vaikuttavia seurauksia.
Komentotilaan siirrytään painamalla Esciä ja kirjoitustilaan i:tä tai Insertiä. Muista tiloista lisää myöhemmin.
Avaa nyt uusi tiedosto (vim TEST), jolloin vim käynnistyy. Tiedosto on luultavasti tyhjä, jolloin jokaisella rivillä näkyy sininen ~-merkki. Paina nyt i:tä, jolloin pääset kirjoitustilaan. Tällöin ruudun vasemmassa alareunassa luultavasti lukee -- INSERT -- merkiksi siitä, että olemme kirjoitustilassa. Kokeile kirjoittaa tekstiä, huomaat, että vim toimii nyt aivan kuin "tavallisetkin" tekstieditorit. Paina lopuksi Esciä palataksesi komentotilaan, joka on vimin perustila.
Tiedostossa liikkuminen
Tiedostossa voi liikkua komento- ja kirjoitustilassa tavalliseen tapaan nuolinäppäimillä. Lisäksi Page up- ja Page down -näppäimet toimivat. Kuitenkin komentotilassa on mahdollista liikkua myös käyttäen näppäimiä h, j, k ja l seuraavasti:
k h l j
Muistisääntönä toimii se, että j, joka näyttää hieman alaspäinnuolelta, siirtyy tiedostossa alaspäin ja h, joka on j:n vasemmalla puolella, vasemmalle. Opettelun jälkeen nämä napit ovat huomattavasti nopeammat käyttää kuin nuolinäppäimet komentotilan komentojen kanssa.
Tallentaminen, sulkeminen ja muita peruskomentoja
Komentotilassa monilla kirjaimilla on tiettyjä komentoja. Lisäksi kaksoispisteen painaminen avaa ruudun alareunaan Vimin komentorivin, johon voi kirjoittaa komentoja. Yksi yleisimmin tarvittavista komennoista on tiedoston tallentaminen, ja se tehdään komennolla
:w
Kokeile nyt tiedoston tallentamista. Paina ensin Esciä varmistuaksesi siitä, että olet komentotilassa. Paina tämän jälkeen kaksoispistettä ja kirjoita komentoriville w ja paina enteriä. Vim ilmoittaa tallentaneensa tiedoston ja kertoo myös mm. rivien lukumäärän.
Huomaa, että jos et siirry ensin komentoriville kaksoispisteellä, w ei tallenna mitään vaan se siirtyy seuraavan sanan alkuun. Näistä lisää myöhemmin.
Vim lopetetaan komennolla :q. Kuitenkin jos olet tehnyt muokkauksia tiedostoon, Vim ei suostu sammumaan vaan kertoo, ettei tiedostoa ole tallennettu muutosten jälkeen. Tallenna muutokset ensin komennolla
:w
ja sulje tämän jälkeen Vim komennolla
:q
tai tee molemmat yhdessä komennolla
:wq
Toisaalta jos olet varma siitä, että et halua tallentaa muutoksia, voit pakottaa Vimin sulkeutumaan lisäämällä komennon perään huutomerkin:
:q!
Tiedosto voidaan ladata uudestaan komennolla
:e
Jos tiedostoa on muokattu eikä sitä ole tallennettu, on perään lisättävä huutomerkki. Tämä siis ei tallenna tiedostoa!
Komentotilan ilot
Komentotilassa lähes jokaisella aakkosnäppäimellä on oma komentonsa - ja muista, että komennot riippuvat kirjainkoosta. Näitä komentoja on todella paljon ja niitä löytyy listattuna artikkelissa Vim. Tässä käydään kuitenkin läpi tavallisimmat.
Kirjoita tiedostoosi vaikkapa seuraavanlainen rivi (muista siirtyä kirjoitustilaan painamalla i:tä):
Linux.fi-wikisstä löyyy opaita ja mm keakugtdluslufet.
Ja muokkaa se sitten oikeaan muotoon seuraavasti:
- Mene komentotilaan painamalla Esc:iä
- Poista ylimääräinen s ensimmäisestä sanasta viemällä kursori (käytä hjkl-näppäimiä jotta ne tulisivat tutuksi) s:n päälle paina x:ää. x poistaa kursorin alla olevan merkin. Huomaa, että caps lock ei saa olla päällä, sillä komento on nimenomaan pieni x.
- Poista samalla tavalla ylimääräinen y toisesta sanasta
- Lisää puuttuva p kolmanteen sanaan viemällä kursori nykyisen p:n kohdalle ja paina i:tä, jolloin siirryt kirjoitustilaan. Lisää toinen p paikalleen ja paina Esciä.
- Lisää samaan tapaan piste mm:n perään
- Viimeinen sana on niin sekainen, että se kannattaa kirjoittaa kokonaan uudelleen. Siirry w-näppäintä painelemalla sen alkuun ja paina R (siis iso R), joka aloittaa kyseisen rivin korvaamisen. Tämän jälkeen kirjoita oikea sana nykyisen päälle.
Mikäs tämä w oikein on? Se on yksinkertaisesti komento, joka siirtää kursorin seuraavan sanan alkuun. Vastaavanlainen komento on e, joka siirtää kursorin nykyisen sanan loppuun. Näille voi antaa myös kertoimia: kokeile vaikka komentoa 4w tai 3e. Myös 0 (nolla) on vastaavanlainen komento, se siirtää kursorin nykyisen rivin alkuun.
Myös seuraavat komennot tulevat usein tarpeeseen:
- r, joka korvaa kursorin alla olevan merkin
- o, joka aloittaa uuden rivin nykyisen alapuolelle ja siirtyy kirjoitustilaan
- O, joka aloittaa uuden rivin nykyisen yläpuolelle ja siirtyy kirjoitustilaan
- d, joka poistaa kursorinliikkeen verran tekstiä
- dd, joka poistaa nykyisen rivin
- u, joka kumoaa edellisen muutoksen
- CTRL+r, joka tekee muutoksen uudelleen.
Tarkastellaanpa vähän tarkemmin poistokomentoa d. Mikä ihmeen kursoriliike? Tarkastellaanpa esimerkkiä. Mitä jos vaikka haluaisimme poistaa kolme seuraavaa kirjainta? Voit ehkä jo arvata, että d:lle voi antaa kertoimen: komenna vaan 3dl, niin seuraavat 3 kirjainta poistetaan. 3 tarkoittaa siis sitä, kuinka monta kertaa operaatio toistetaan. d on poisto-operaatio ja l on, kuten alussa totesimme, "nuoli" oikealle. Toki myös 3d[oikea nuolinäppäin] toimisi, mutta se on hitaampi kirjoittaa. Kursorinliikkeeksi voidaan määrittää myös "kolme merkkiä oikealle" ja tämä operaatio voidaan toistaa kerran komennolla d3l, joka vastaisi täysin edellistä komentoa.
Myös edellä esitellyt w ja e ovat kursoriliikkeitä. Esimerkiksi seuraavat kolme sanaa poistettaisiin komennolla d3w.
Kursorinliikkeitä ovat myös mm.
- G, joka siirtää kursorin tiedoston loppuun
- gg, joka siirtää kursorin tiedoston alkuun
- g rivinumero, joka siirtää kursorin tietylle riville
- %, joka siirtää kursorin valittua sulkumerkkiä - esim. {:tä - vastaavaan sulkumerkkiin (avaavasta lopettavaan ja päinvaston, kokeile!)
Tekstin maalaaminen, kopiointi ja liittäminen
Tekstiä maalataan erillisessä ns. visual-tilassa. Siihen siirrytään painamalla komentotilassa v:tä. Tämä tila muistuttaa komentotilaa, sillä siinä toimivat osittain samat komennot. Kun tähän tilaan siirrytään, maalattavan tekstin toiseksi pääksi asetetaan kursorin nykyinen sijainti. Toista päätä voidaan siirtää normaaliin tapaan liikkumalla tekstissä (käytä hjkl-nappeja jotta ne tulisivat tutuksi). Kun haluttu teksti on maalattu, se voidaan vaikkapa poistaa painamalla d:tä ja kopioida painamalla y:tä.
Molemmissa tapauksissa maalattu teksti siirtyy leikepöydälle, josta se voidaan liittää kursorin nykyiseen sijaintiin painamalla p:tä. Huomaa, että myös kaikki poistetut tekstit ilmestyvät leikepöydälle, josta ne on mahdollista liittää tekstiin. Poistaminen d:llä vastaa siis myös leikkaa-toimintoa.
Maalaustilasta poistuttaan normaalisti Escillä.
Etsiminen ja korvaaminen
Tekstistä voidaan etsiä tiettyä merkkijonoa kirjoittamalla komentotilassa komento
/merkkijono
Kun /-merkki annetaan, ikkunan alareunaan aukeaa komentorivi, johon voi kirjoittaa haettavan merkkijonon. Haun jälkeen seuraavaan osumaan siirrytään n-näppäimellä ja edelliseen N:llä.
Vimissä on myös kätevä toiminto merkkijonojen korvaamiseksi toisella. Otetaanpa esimerkiksi seuraava merkkijono:
Vim on huono tekstieditori ja siinä on huono käyttöliittymä.
Kirjoita tämä rivi Vimiin ja siirry sille. Kirjoita sitten komentotilassa
:s/huono/hyvä/
Jolloin Vim korvaa rivin ensimmäisen huono-sanan sanalla hyvä. Koko rivi voitaisiin korvata kerralla komennolla
:s/huono/hyvä/g
Jos g:n perään lisätään vielä c, Vim kysyy jokaisen korvattavan sanan kohdalla, korvataanko se vai ei.
Korvauksen voi ulottaa myös koko tiedostoon komennolla
:%s/huono/hyvä/g
Yksittäisten merkkijonojen lisäksi voidaan käyttää myös säännöllisiä lausekkeita. Tästä löytyy lisätietoja VIM Regular Expressions 101 -artikkelista.
Ulkoisten komentojen suorittaminen
Vim tarjoaa mahdollisuuden suorittaa ulkoisia komentoja ja haluttaessa kopioida niiden tulosteen nykyiseen dokumenttiin. Ulkoinen komento syötetään normaalisti komentona, eli sen alkuun tulee kaksoispiste : Tämän jälkeen tulee huutomerkki ja sitten suoritettava komento. Esimerkiksi nykyisen työhakemiston tiedostot näkisi komennolla
:!ls
Jos nämä tiedostot haluttaisiin kopioida nykyiseen dokumenttiin, käytettäisiin toimintoa r:
:r!ls
Makrot
Vim mahdollistaa komentosarjojen tallentamisen makroiksi. Makrojen avulla voidaan tehdä sama operaatio monta kertaa. Makron nauhoittaminen aloitetaan painamalla komentotilassa ensin q:ta ja tämän jälkeen sen rekisterin kirjainta, mihin makro tallennetaan. Tämän jälkeen tulee itse makro. Esimerkiksi teemme makron, joka poistaa rivin ensimmäisen merkin ja siirtää kursorin seuraavan rivin alkuun. Tämä makro voidaan sitten toistaa useamman kerran, jolloin saamme poistettua jokaisen rivin ensimmäisen merkin.
Tallennetaan tämä makro a-rekisteriin kirjoittamalla komentotilassa
qa0xj
Ja painamalla lopuksi q:ta makron nauhoituksen lopettamiseksi. Makron nauhoituksen ajan ruudun alareunassa on teksti recording.
Edellä siis q aloittaa makron nauhoituksen, a tarkoittaa a-rekisteriä, 0 siirtää kursorin rivin alkuun, x poistaa merkin ja j siirtää kursorin seuraavalle riville.
Makro voidaan toistaa komennolla
@a
Eli ensin tulee @-merkki ja sen jälkeen rekisteri, johon makro on tallennettu. Makro voidaan toistaa myös useita kertoja lisäämällä sen eteen kerroin. Esimerkiksi se suoritettaisiin sata kertaa näin:
100@a
Lopuksi
Tässä oppaassa käytiin läpi vain muutamia Vimin peruskäytön kannalta tärkeimpiä ominaisuuksia. Tarkemmat tiedot Vimistä ja muista sitä käsittelevistä ohjeista löytyy artikkelista Vim.