vi
editoruOva stranica je zami~sljena kao prva pomo~t onima koji ~zele na brzinu
nau~citi dovoljno vi
a 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 vi
a (i tu uop~te ne pretjerujem!).
vi
eva 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 vi
u 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... ~:
vi
a?(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 vi
a 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.
Jedna od ~cesto kori~stenih dvoto~cka-naredbi je naredba "se"
(ili "set"), za pode~savanje raznih finih detalja u pona~sanju
vi
a. Neke od stvari koje se tako mogu podesiti, a mogle bi
vam zatrebati, su:
vi
u donjem
desnom dijelu ekrana prikazivao jeste li u input modu (u komandnom ne
prikazuje ni~sta), utipkajte :se smd
.Ctrl
+D
odmah nakon ~sto se
Enter
om prebacite u novu liniju.
autoindent
mo~ze biti i ~stetan - najbolji primjer je vjerojatno
pasteanje velike koli~cine teksta iz
neke vanjske aplikacije u prozor u kojem se vrti
vi
. U pasteanom tekstu nema
Ctrl+D
ova, i tekst samo putuje sve vi~se i
vi~se desno za svaku indentiranu liniju. Da biste to sprije~cili,
prije pasteanja ve~tih koli~cin~a teksta u
vi
-prozor, isklju~cite autoindent pomo~tu
:se noai
. (Op~tenito, "no" prije imena opcije
ozna~cava suprotno pona~sanje. Tako i npr.
showmode
mo~zete isklju~citi sa :se nosmd
.)
vi
~zeli privu~ti pa~znju, umjesto annoying
beep-zvuka, bljesnut ~te ekran ~ ako terminal
to podr~zava.
Ako ~zelite vidjeti sve opcije koje vi
podr~zava, i njihove trenutne postavke, utipkajte
:se all
. Ima zanimljivih stvari...
Usprkos svemu ~sto su vam mo~zda pri~cali, kursorske strelice u
vi
u rade. Samo ih treba "nagovoriti"...~:
No poanta je u tome da vam to uglavnom ne treba. Filozofija
vi
a 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).
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:
i
nsert, a
ppend, o
pen 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, 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).
Kao ~sto sam rekao, ovo je samo vrlo mali dio mogu~tnosti
vi
a. Da biste dobili ogromnu koli~cinu informacija o
vi
u, 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.