KOMANDE EDITORA VI

<pre>

editora VI
by Nikola Kotur — last modified Nov 06, 2007 05:34 PM
UNIX operativni sistem standardno prate nekoliko editora teksta. To su pre svega, editori linijskog tipa ed i ex, i ekranski editor vi. Editor vi poseduje sve mogućnosti koje imaju ed i ex i u suštini predstavlja ekranski orijentisan korišnički interfejs ka njima. Po potrebi, vi ih poziva u pozadini, a rezultate koje oni daju, prikazuje na displeju monitora. No bez obzira na to, korisnika ne treba da interesuje veza editora vi sa drugim editorima ili uslužnim programima i može ga posmatrati kao nezavisnu celinu.

</pre>

<pre>Na samom početku treba napomenuti da vi ume da stvori averziju korisnika prema njemu. Relativno je komplikovan za upotrebu jer ima tri moda rada u kojima se funkcije znakova generisanih sa tastature drastično razlikuju. Obično ne koristi kontrolne tastere tipa PageUp, PageDown kao ni funkcijske tastere tako da se komande zadaju sa standardnih tastera i njihovom kombinacijom sa Ctrl. Ne poseduje menije na koje smo navikli kod, uslovno receno user friendly editora (DOS-ov edit, na primer). Međutim, treba imati u vidu da je osnova editora vi definisana početkom sedamdesetih, istovremeno sa početkom razvoja UNIX-a. Još onda je postavljen cilj da vi funkcioniše na raznim tipovima terminala od kojih većina nije imala ni preveliki ni premoćan skup kontrolnih sekvenci, kao ni standardizovan izgled tastature. Naravno, u ovome se uspelo ali je cena plaćena upravo činjenicama koje su pobrojane kao mane ovog editora.</pre>

<pre> i obično, sve je stvar navike. Nakon boljeg upoznavanja sa vi editorom, svakom korisniku će biti jasno da komande za globalnu zamenu i pretraživanje i rad sa baferima koje on nudi, predstavljaju glavni nedostatak pomenutih user friendly editora.</pre>

<pre>U daljem tekstu sledi kratak opis određenog skupa komandi vi editora pri čemu je izbor prilagođen potrebama srednjih korisnika. Ako, nakon čitanja ovog teksta, neko i dalje smatra da vi nije editor po njegovoj meri, preporučuju mu se sledeći editori: emacs, joe, jed ili pico s tim što treba imati u vidu da oni nisu standardni deo UNIX distribucija.</pre>

<pre> rada editora
Ekranski editor VI se može naći u jednom od tri moda rada:</pre>

<pre> – svi znaci otkucani sa tastature se tretiraju kao komande,
insert -služi za unos teksta, tasteri imaju normalno značenje,
mod komandne linije -služi za unos dužih komandi.
Nakon startovanja, editor ulazi u komandni mod. Prelazak u insert ili mod komandne linije je jedino moguć iz komandnog moda. Prelazak iz komandnog u insert mod se ostvaruje većim brojem komandi za dodavanje teksta ali se napuštanje insert moda i povratak u komandni obavlja uvek pritiskom na taster. U mod zadnje linije je moguće preći jedino komandom ‘:’. Iz ovog moda se izlazi unošenjem željene komande i njenim izvršavanjem pritiskom na taster ili tasterom kada se mod zadnje linije napušta odmah.</pre>

Poziv editora:
vi file    - postavlja kursor u prvu liniju datoteke file.
vi + file - postavlja kursor na zadnju liniju datoteke file.
vi file1 file2 … filen - sukcesivno editovanje više datoteka. Po završetku editovanja jedne, sledeća se poziva sa :next ili skraceno :n.
Izlaz iz editora:
:wq - zapiši i izađi
:q! - izađi bez zapisivanja — bez obzira na učinjene izmene.
:w! - prepiši datoteku iako je 'Read only'
:x - Isto kao :wq
Poziv drugih datoteka:
:e file - u editor poziva drugu datoteku na editovanje. Nova datoteka briše iz bafera prethodni tekst.
:r file - učitava datoteku file i umeće je u tekst ispod tekuće linije.
Pomeranje kursora:
^ - pomeranje kurzora na prvi neblanko znak tekuće linije
$ - pomeranje kursora na kraj tekuće linije
- pomeranje kursora na početak naredne linije
h - pomera kursor ulevo za jednu poziciju
j - pomera kursor nadole za jednu poziciju
k - pomera kursor nagore za jednu poziciju
l - pomera kursor udesno za jednu poziciju
NAPOMENA: Obično rade i strelice.

<pre>Kretanje kroz prozor:
f – pomera ceo prozor unapred kroz datoteku
b – pomera ceo prozor unazad kroz datoteku
Brojevi linija i pretraživanje:
:n – postavlja kursor na početak n-te linije
/string – pretraživanje datoteku po nizu znakova string unapred</pre>

?string – pretraživanje datoteke po nizu znakova string unazad

?ponavlja prethodno pretraživanje unapred
- -ponavlja prethodno pretraživanje unazad
g - daje informaciju o tekućoj liniji i datoteci koja se edituje
UNDO i REPEAT
u - vraća datoteku na stanje pre izvršavanja poslednje komande
. - ponavlja poslednju komandu
Brisanje teksta:
x - briše znak ispred kurzora
X - briše znak iza kurzora
:i,jd - briše tekst od i-te do j-te linije
dd - briše tekuću liniju
dw - briše tekuću reč
Izmene teksta:
s - zamenjuje znak ispod kursora novootkucanim tekstom. Završava se sa .
r - zamenjuje samo znak ispod kursora
cw - zamenjuje tekst od kursora do kraja reči novim tekstom
:i,js/tekst1/tekst2/option - od i-te do j-te linije, zameni tekst1 sa tekst2.
:i,jg/tekst/s/tekst1/tekst2/option - od i-te do j-te linije, u linijama koje sadrže tekst, zameni tekst1 sa tekst2.
Komande za globalnu zamenu mogu da imaju i dodatni parametar option. Bez argumenta option, u svakoj liniji će se izvršiti maksimalno jedna zamena teksta tekst1 i to na mestu njegovog prvog pojavljivanja. Ako se isti tekst pojavljuje više puta u istoj liniji, na ostalim mestima ostaje nepromenjen. Ako je option jednak g onda se zamena obavlja globalno. Traženi tekst koji se pojavljuje više puta u istoj liniji, biće zamenjen na svim mestima. Takođe je korisna i opcija c koja omogućava globalnu zamenu ali uz verifikaciju. Kada se traženi tekst pronađe, od korisnika se očekuje da sa y ili n kaže da li pronađeni tekst treba zameniti ili ne.

primeri:

<pre>:1,$s/srdan/srdjan/g
od prve do zadnje linije menja ‘srdan’ sa ‘srdjan'</pre>

<pre>:1,$s/^/tekst/
svakoj liniji dodaje ‘tekst’ na početak <pre>

<pre>:1,$s/$/tekst/
svakoj liniji dodaje ‘tekst’ na kraj </pre>

<pre> teksta
a unošenje teksta počev od pozicije prve udesno od pozicije kursora. Unos se završava pritiskom na taster .
i unošenje teksta počev od tekuće pozicije kursora. Unos se završava pritiskom na taster .
o kreira novu liniju ispod tekuće i ulazi u ‘insert’ mod. Unos se završava pritiskom na taster .
O kreira novu liniju iznad tekuće i ulazi u ‘insert’ mod. Unos se završava pritiskom na taster .
Rad sa baferima
VI poseduje dve vrste bafera: neimenovane i imenovane. Neimenovanih ima 9 a referenciranje na njih se obavlja navođenjem njihovog rednog broja. Komande dd i yy menjaju sadržaj ovih bafera tako što se novi sadržaj uvek upisuje u prvi a pri tome se stari sadržaj bafera pomera iz prethodnog u naredni (rade kao pomerački registri) pri čemu se sadržaj poslednjeg (devetog) gubi. Imenovanih bafera ima 26 a imena im se sastoje od slova engleske abecede. Mala i velika slova predstavljaju fizički iste bafere ali se u radu razlikuju. Na primer, zapis u bafer a briše njegov prethodni sadržaj dok je zapis u bafer A zapis u isti bafer ali se novi sadržaj dodaje prethodnom.</pre>

<pre>dd briše tekuću liniju i smešta njen sadržaj u neimenovani bafer.
p štampa sadržaj prvog neimenovanog bafera ispod tekuće linije
P štampa sadržaj prvog neimenovanog bafera iznad tekuće linije
yy smešta tekuću liniju u neimenovani bafer (ne briše ju)
„anyy pamti u baferu ‘a’ n linija
„ap štampa sadržaj bafera a ispod tekuće linije.
„np štampa sadržaj n-tog neimenovanog bafera ispod tekuće linije
Sastavljanje i rastavljanje linija:
j – sastavlja tekuću i narednu liniju;</pre>

<pre> komandi
Instrukcije komandnog moda je moguće multiplicirati, jednostavno navođenjem željenog broja pre unosenja komande. Ovo može biti izuzetno korisno. U nekim primerima prikazanim do sada, ovo je već korišćeno. Na primer, komanda 10x briše deset znakova desno od kurzora, 10dd briše 10 linija, i slično.</pre>

<pre> VI-a
Slično kao komandni interpreter, i VI poseduje neke ugrađene promenljive, koje ako su postavljene, menjaju ponašanje editora. Na sve promenljive ovog tipa se može uticati :set komandom. Na primer:</pre>

<pre>:set nu prebacuje VI u displej mod gde je, osim sadržaja datoteke, na početku prikazan i redni broj linija. Ovo može biti od koristi jer velik broj komandi koristi redne brojeve linija kao argumente.
:set nonu je suprotno od :set nu
:set showmode na kraju zadnje linije će se prikazivati trenutni mod rada editora (komandni ili insert).
:set noshowmode je suprotno od :set showmode
:set showmatch editor će prikazivati uparenost zagrada ‘(){}[]’ sto je vrlo korisno u razvoju programa.
:set noshowmatch je suprotno od :set showmatch
Komande za zapisivanje
:i,jw file2 zapisuje tekst od i-te do j-te linije u file2
:w file2 zapisuje celu datoteku pod drugim imenom file2
:w>> file2 čitav sadržaj zapisuje na kraj datoteke file2
Prilagođavanje VI editora svojim potrebama
Prilagođavanje VI-a se obavlja vrlo jednostavno. U $HOME direktorijumu treba kreirati datoteku .virc (ili ukoliko koristite noviji editor Vim onda .vimrc) i u nju uneti sve komande koje će se izvršiti inicijalno, nakon pozivanja editora. Na primer, ako .virc sadrži sledeće komande:</pre>

<pre>:set showmode
:set nu
:set showmatch
nakon poziva, VI automatski ulazi u showmode, nu i showmatch mod.</pre>

Document

(Visited 7 times, 1 visits today)
Некатегоризовано

Оставите одговор

Ваша адреса е-поште неће бити објављена. Неопходна поља су означена *