Osnovne i neke druge stvari o vi editoru

Ova stranica je zami~sljena kao prva pomo~t onima koji ~zele na brzinu nau~citi dovoljno via za jednostavno utipkavanje program~a, HTML stranic~a i sli~cnog. Napomena: Prema ovom ~sto je ovdje napisano, vi se mo~ze ~ciniti nezgrapnim, i lo~se dizajniranim editorom. Glavni razlog je taj ~sto ~te tu biti prikazano manje od 1% mogu~tnosti via (i tu uop~te ne pretjerujem!). vieva fantasti~cna uravnote~zenost izme~du univerzalne dostupnosti i customizabilnosti, smisao za ergonomi~cnost i mnemotehni~cnost svake pojedine komande, te ortogonalnost i me~dusobno upotpunjavanje njegovih featurea, mogu se razumjeti tek kad se o viu zna puno vi~se nego ~sto je opisano na ovoj stranici.

vi je tekstualni editor, koji je nastao dok je Unix jo~s bio u povojima, u doba malih diskova, nestandardnih tipkovnic~a (pa ~cak i character setova:), sporih vez~a i puno ve~te prosje~cne hakerske orijentiranosti korisnik~a kompjuter~a. Kao rezultat toga, neke stvari rije~sene su na na~cine koji isprva mogu izgledati neprirodni, ali imaju mnoge dobre strane koje ne izlaze na vidjelo na prvi pogled... no dosta filozofije, hajdemo ne~sto konkretno i nau~citi... ~:

Kako iza~ti iz via?
I ne~sto o modovima...

(brzi odgovor: ESC : x ENTER)

Zanimljivo, ovo je naj~ce~s~te postavljano pitanje~:. ~Covjek pokrene vi jednostavno utipkav~si "vi" u komandnu liniju, i nakon toga dobije poznati vertikalni niz tild~i, naizgled nijedna tipka ne radi... katastrofa! A mo~zda ipak nije... stvar je u tome da vi, za razliku od ve~tine ostalih editor~a, radi u nekoliko modova. Tzv. input mode je ono u ~cemu jedino rade dana~snji moderni editori, a glavno obilje~zje mu je da pritisak bilo koje "obi~cne" tipke jednostavno ume~te pripadni znak u trenutno otvorenu datoteku (zapravo buffer, ali to ovdje nije toliko bitno). Kako bi druga~cije uop~te moglo biti? Pa, vi ima jo~s jedan mod, tzv. command mode, u kojem svaka tipka (slovo, broj, interpunkcijski znak) izvr~sava/stvara odre~denu komandu nad tekstom...

Dakle, dok npr. "p" u input modu zna~ci "ubaci slovo p na mjesto kursora", u komandnom modu ista tipka zna~ci "paste - ubaci sadr~zaj trenutno odabranog clipboarda na mjesto indicirano kursorom".

Naravno, mogu~te je prelaziti izme~du modova - vi~se o tome kasnije. Zasad samo treba znati da je vi u po~cetku (pri pokretanju) u komandnom modu, te je to razlog za~sto gotovo nijedna tipka "ne radi". Onaj Esc na po~cetku samo slu~zi da bi vas odveo u komandni mod ako ste slu~cajno u input modu - ina~ce ga ne treba tipkati. Iz komandnog moda mogu~te je direktno napustiti vi (pritisnite i dr~zite Shift, i za to vrijeme dva put pritisnite z - kao da ~zelite utipkati "ZZ"), ali iz raznih razloga (prvenstveno psiholo~skih) je bolje prvo u~ti u tzv. colon mode utipkav~si dvoto~cku, te otamo iza~ti iz via naredbom x (u dvoto~cka-modu sve naredbe zavr~savamo s Enter - kako ih tipkamo, one ~te se prikazivati u najdonjem redu ekrana).

Jo~s ne~sto: ako ste ne~sto zabrljali u datoteci koju ste otvorili, te ~zelite iza~ti bez snimanja promjen~a, utipkajte ESC : q ! ENTER. S dvoto~cka-naredbama koje sadr~ze uskli~cnik op~tenito treba biti vrlo pa~zljiv - ovo je ekvivalentno, u Windowsima, odgovoru "No" na pitanje ~zelite li snimiti promjene.

Pode~savanje nekih opcij~a

Jedna od ~cesto kori~stenih dvoto~cka-naredbi je naredba "se" (ili "set"), za pode~savanje raznih finih detalja u pona~sanju via. Neke od stvari koje se tako mogu podesiti, a mogle bi vam zatrebati, su:

Ako ~zelite vidjeti sve opcije koje vi podr~zava, i njihove trenutne postavke, utipkajte :se all. Ima zanimljivih stvari...

Osnovno kretanje kursora, i scroll

Usprkos svemu ~sto su vam mo~zda pri~cali, kursorske strelice u viu rade. Samo ih treba "nagovoriti"...~: No poanta je u tome da vam to uglavnom ne treba. Filozofija via je upravo portabilnost ~ kako koda, tako i su~celja. ~Sto prije nau~cite raditi isklju~civo s "glavnim" dijelom tipkovnice, bez ikakvih fancy tipaka, lak~se ~te vam biti sjesti za bilo koju tipkovnicu i raditi, bez opasnosti da umjesto npr. "scroll down" zahvatite tipku "delete line"... a vi to (ie, raditi samo s glavnim dijelom tipkovnice) mo~ze. ~Stovi~se, optimiziran je za taj pristup. U komandnom modu, tipke h, j, k i l slu~ze za pomicanje kursora jedno mjesto lijevo, dolje, gore i desno, tim redom. "h" i "l" je, nadam se, lako zapamtiti jednom kad su vam prsti desne ruke tamo gdje trebaju biti, a "j" se uz mali napor ma~ste mo~ze zamisliti kao strelica prema dolje... (ah, ta mnemotehnika...:)

Ctrl tipka u komandnom modu daje (izme~du ostalog) brojne mogu~tnosti scrollanja... s tipkama e i y gore i dolje po jednu liniju, u i d ("up" i "down") po pola ekrana, te b i f ("back" i "forward") za skoro cijeli ekran (ostavlja dvije linije prijelaza da biste se lak~se sna~sli).

Osnovne naredbe za brisanje i ubacivanje teksta

Tipka i vas prebacuje u input mod, ostavljaju~ti kursor na mjestu. No, kako Esc uglavnom pomakne kursor ulijevo prilikom prelaska u komandni mod, da biste nastavili upravo gdje ste bili stali, trebat ~te vam tipka a, koja vas ubaci u input mod, prethodno pomi~cu~ti kursor za jedno mjesto desno. Jo~s je korisnija tipka A (dakle, Shift+a), koja vam otvara input mod prebaciv~si vas na kraj linije. Tipka o radi isto ~sto i A,Enter ~ otvara vam novu liniju za pisanje. Mnemonika: insert, append, open line.


Tipka x bri~se jedan znak, s tim da poku~sava "inteligentno" pogoditi koji znak ~zelite obrisati ~ ukoliko ste negdje usred linije, bri~se znak na kojem je kursor (pona~sa se kao "Delete"), a ako ste na kraju linije, bri~se znak lijevo od kursora (kao "Backspace"). To je u velikom broju slu~cajeva upravo ono ~sto vam treba, no ako vam ba~s treba "Backspace" u sredini linije, za to slu~zi X.

U input modu, da biste izbrisali znak (ili vi~se njih) koji ste upravo napisali, ne morate izlaziti u komandni mod ~ dovoljno je pritisnuti Ctrl+h (ili Backspace na ispravno pode~senim terminalima), te pretipkati ispravni znak ili znakove. Neka vas ne brine to ~sto ~te za vrijeme brisanja znakovi ostati na ekranu ~ ako vas to ba~s jako ~zivcira, nakon brisanja pritisnite Esc a.

Postoji jo~s jedna korisna kombinacija za brisanje ve~tih koli~cin~a teksta ~ d d bri~se liniju u kojoj je kursor. Prije te naredbe mo~zete utipkati broj, koji govori koliko linij~a zelite obrisati. Ako u tome pretjerate (a i ina~ce, ako obri~sete ne~sto ~sto niste trebali), u je undo (jednostruki).

~Sto dalje?

Kao ~sto sam rekao, ovo je samo vrlo mali dio mogu~tnosti via. Da biste dobili ogromnu koli~cinu informacija o viu, dovoljno je utipkati "man vi"... no meni je trebalo nekih 2 mjeseca eksperimentiranja i u~cenja "sa strane" da bih napokon mogao bez pote~sko~ta pro~citati tu man-stranicu...~:

Ako vas zanima "samo malo vi~se", mislim da je VI: Using the Standard Unix Visual Editor dobro mjesto za po~cetak...

Ako vi~se volite tutorial-pristup, i imate vi~ska slobodnog vremena~: (isplatit ~te vam se!), An Introduction to Display Editing with Vi je jako dobro napisan tekst...

Ako pak preferirate FAQove, jedan jako dobar i ~citljiv je na faqs.org.

Tako~der, ako imate neko pitanje o tome kako ne~sto u vi napraviti na lukav/brz na~cin, rado ~tu vam pomo~ti.