Ülevaade
Vi oli üldse esimene täisekraaniredaktor. See on üks tähtsamaid programme, millele osutavad nii UNIX® põlgurid kui ka selle kaitsjad: kuigi programmi omandamine ei pruugi olla kõige kergem, on see põhivõtete omandamisel siiski äärmiselt võimas tööriist. Mõne üksiku klahvivajutusega võib Vi kasutaja sõna otseses mõttes mägesid liigutada - ja kui Emacs välja jätta, polegi õigupoolest peaaegu ühtegi tekstiredaktorit, mis midagi samasugust suudaks.
Mandriva Linux pakub Teile tegelikult varianti Vim ehk niinimetatud täiustatud VI'd (VI iMproved), kuid käesolevas peatükis kasutame siiski läbivalt nimetust Vi.
Kui soovite Vi kohta rohkem teada saada, uurige (inglise keeles) sissejuhatust Hands-On Introduction to the Vi Editor või Vim'i kodulehekülge (eesti keeles on võimalik vi'ga põgusalt tutvust teha PingviiniWikis).
Vi kasutamiseks käivitame selle käsurealt sarnaselt Emacsiga. Võtame siis taas ette meie kaks näitefaili ja anname korralduse:
$ vi fail1 fail2
Seejärel ilmub Teie ette selline aken:
Te olete nüüd käsurežiimis esimese avatud faili alguses. Selles režiimis ei ole faili võimalik teksti sisestada. Selleks tuleb Teil lülituda lisamisrežiimi.
Toome mõned kiirkorraldused teksti lisamiseks:
![]() | Märkus |
---|---|
Pange tähele, et kiirkorraldused tuleb anda täpselt nii, nagu siin näidatud, sest Vi teeb käskudes vahet suur- ja väiketähtedel. Sestap on näiteks käsud a ja A täiesti erinevad asjad. |
Lisamisrežiimis on ekraani allosas näha sõne ---INSERT---
, mis annab Teile teada, millises režiimis parajasti viibite. See on ainus režiim, milles saab teksti sisestada. Käsurežiimi naasmiseks vajutage klahvi Esc.
Lisamisrežiimis saate klahvidega Backspace ja DEL teksti kustutada. Nooleklahvidega saab tekstis liikuda nii käsu- kui lisamisrežiimis. Käsurežiimis on veel mitmeid klahvikombinatsioone, mida tutvustame allpool.
ex-režiimi saab siseneda käsureale : kirjutades. Märk :
ilmub ekraani alumisse vasakusse serva ja selle järel asetseb kursor. Vi peab kõike, mida Te nüüd enne klahvile Enter vajutamist kirjutate, ex-käsuks. Kui kustutate käsu ja :, naasete käsurežiimi ning kursor suundub taas oma varasemasse kohta tekstis.
![]() | Vihje |
---|---|
ex-režiimis saab kasutada ka lõpetamist: kirjutage käsust esimesed sümbolid ja vajutage selle automaatseks lõpetamiseks klahvi Tab. |
Faili tehtud muudatuste salvestamiseks andke käsurežiimis korraldus :w
. Kui soovite salvestada puhvri sisu mõnda muusse faili, andke korraldus :w
<failinimi>
.
Liikumiseks samas puhvris failide vahel, mille nimed andsite käsureal, andke järgmisele failile liikumiseks korraldus :next
ja eelmisele failile liikumiseks :prev
. Te võite kasutada ka käsku :e <failinimi>
, millega saate liikuda vajalikule failile, kui see on juba avatud, või avada uue faili. Kasutada saab ka lõpetamist.
Nagu Emacsi korral, saab ka vi's lasta ekraanil näidata mitut puhvrit korraga. Selleks kasutage käsku :split
.
Puhvri vahetamiseks andke käsk Ctrl-wj alumisse või Ctrl-wk ülemisse puhvrisse liikumiseks. j ja k asemel võib kasutada ka üles ja alla osutavaid nooleklahve. Käsk :close
peidab puhvri, käsk :q
aga sulgeb.
Tasub silmas pidada, et kui üritate puhvri peita või sulgeda ilma sellesse tehtud muudatusi salvestamata, ei võeta käsku arvesse ja Vi näitab sellist teadet:
No write since last
change (use ! to override)
Sellisel juhul tehke nii, nagu öeldud, ja andke käsk :q!
või :close!
.
Lisaks redigeerimisrežiimis kasutatavatele klahvidele Backspace ja Del võimaldab Vi kasutada veel tervet rida käske teksti kustutamiseks, kopeerimiseks, asetamiseks ja asendamiseks käsurežiimis. Alltoodud käsud on jagatud õigupoolest kahte lehte: sooritatavad toimingud ja nende mõju. Toimingud võivad olla järgmised:
Mõju määrab selle, millisele märgigrupile käsk mõjub.
h, j, k, l: üks märk vasakule, alla, üles, paremale[20]
e, b, w: aktiivse sõna lõppu ja algusesse ning järgmise sõna algusesse.
^, 0, $: aktiivse rea esimese mittetühimärgist märgini, aktiivse rea algusesse ja aktiivse rea lõppu.
<x>
: märgi <x>
järgmisele esinemisele. Näiteks fe
viib kursori märgi e
järgmisele esinemiskohale.
/<sõne>
, ?<sõne>
: sõne või regulaaravaldise <sõne>
järgmisele ja eelmisele esinemisele. Näiteks /suva
viib kursori sõna suva
järgmisele esinemiskohale.
Kõigile sellistele “mõjumärkidele” ehk liikumiskäskudele võib eelneda niinimetatud kordusearv. Näiteks G (“Go” ehk 'mine') korral tähistab see reanumbrit failis. Nii on võimalik moodustada kõikvõimalikke kombinatsioone.
Kuigi paljud käsud ei tundu esmapilgul väga loogilised ja näivad keerulistena, jäävad nad praktilisel kasutamisel üpris hõlpsasti külge. Aga kahtlemata andis juba seegi pisuke ülevaade aimu, et väljend “paari klahvivajutusega mägesid liigutama” pole tõest sugugi kaugel.
Teksti kopeerimiseks kasutab Vi käsku, millega me juba tutvusime: y. Teksti lõikamiseks kasutage lihtsalt käsku d. Teksti salvestamiseks on ette nähtud 27 mälu ehk puhvrit: anonüümne mälu ja 26 mälu, mis on tähistatud inglise tähestiku väiketähtedega.
Anonüümse mälu kasutamiseks andke käsk “nii, nagu see on”. See tähendab, et käsk y12w
kopeerib anonüümsesse mällu 12 kursorile järgnevat sõna[21]. Kui soovite selle ala aga lõigata, andke käsk d12w
.
26 nimega mälust mõne kasutamiseks lisage käsu ette "<x>
, kus <x>
määrab ära mälu nime. See tähendab, et eelmises näites toodud 12 sõna kopeerimiseks mällu k
tuleb anda käsk "ky12w
või "kd12w
(kui soovite need sõnad lõigata).
Anonüümse mälu sisu asetamiseks kasutage käsku p
või P
(Paste ehk 'asetamine') teksti lisamiseks vastavalt kursori järele või ette. Nimega mälu sisu asetamiseks kasutage vastavalt käske "<x>p
ja "<x>P
(näitkes "dp
asetab mälu d
sisu kursori järele).
Kirjapandud toimingu teostamiseks:
kopeerige lause esimesed kuus sõna näiteks mällu r
: "ry6w
[22].
See annab oodatud tulemuse, mida näitab Joonis 8.6, “VIM pärast tekstiploki kopeerimist”.
Teksti otsimine on väga lihtne: käsurežiimis andke lihtsalt käsk / ja selle järel sõne, mida soovite otsida, ning vajutage klahvi Enter. Näiteks käsuga /pidu
saab alates kursori asukohast asuda otsima sõnet pidu
. Klahvi n vajutamisel saate liikuda sõne järgmisele esinemisele ja kui jõuate faili lõppu, alustatakse otsinguga uuesti selle algusest. Otsimiseks kursorist tahapoole kasutage käsu / asemel käsku ?.
Väljumiskäsk on :q
(õigupoolest sulgeb see käsk aktiivse puhvri, nagu juba eespool nägime, aga kui tegemist on ainsa avatud puhvriga, pannakse kinni ka Vi). Enamasti ongi tegemist ju üheainsa faili redigeerimisega. Sestap saate väljumiseks kasutada kas käsku
Pange tähele, et kui Teil on mitu puhvrit, salvestab ja sulgeb käsk :wq
ainult aktiivse puhvri.