Anmelden


Passwort vergessen?
prijatelji LUGoNSa
gnu.gif
linuxzasve.jpg
hulk.jpg
zextras_logo.png
 
Sie sind hier: Startseite / Uputstva / Opšte / Komande editora VI

Komande editora VI

erstellt von Nikola Kotur zuletzt verändert: 06.11.2007 17:34

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.

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.

Kao 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.

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.


Modovi rada editora

Ekranski editor VI se može naći u jednom od tri moda rada:

  • komandni - 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 <Esc> 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 <Enter> ili <Esc> tasterom kada se mod zadnje linije napušta odmah.


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
<Enter> - 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.


Kretanje kroz prozor:

<Ctrl> f - pomera ceo prozor unapred kroz datoteku
<Ctrl> 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
?string - pretraživanje datoteke po nizu znakova string unazad
-
- ponavlja prethodno pretraživanje unapred
? - ponavlja prethodno pretraživanje unazad
<Ctrl> 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 <ESC>.
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:

:1,$s/srdan/srdjan/g

od prve do zadnje linije menja 'srdan' sa 'srdjan'

:1,$s/^/tekst/

svakoj liniji dodaje 'tekst' na početak

:1,$s/$/tekst/

svakoj liniji dodaje 'tekst' na kraj


Unos teksta

a unošenje teksta počev od pozicije prve udesno od pozicije kursora. Unos se završava pritiskom na taster <ESC>.
i unošenje teksta počev od tekuće pozicije kursora. Unos se završava pritiskom na taster <ESC>.
o kreira novu liniju ispod tekuće i ulazi u 'insert' mod. Unos se završava pritiskom na taster <ESC>.
O kreira novu liniju iznad tekuće i ulazi u 'insert' mod. Unos se završava pritiskom na taster <ESC>.

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.

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:

<Shift> j - sastavlja tekuću i narednu liniju;


Multipliciranje 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.


Promenljive 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:

: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:

:set showmode
:set nu
:set showmatch

nakon poziva, VI automatski ulazi u showmode, nu i showmatch mod.

Artikelaktionen

abgelegt unter: