=============================================================================== = D o b r o d o š l i u VIM p r i r u č n i k - Verzija 1.7 = =============================================================================== = DRUGO P O G L A V LJ E = =============================================================================== Evo zmajeva: ako je ovo vaš prvi dodir sa programom vim i nameravali ste da uronite u uvodno poglavlje, molimo vas da otkucate :q<enter> i pokušate ponovo. Približno vreme potrebno za uspešan završetak ovog poglavlja je između 8 i 10 minuta, u zavisnosti od vremena potrošenog na eksperimentisanje. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 2.1.1: IMENOVANI REGISTRI ** Sačuvajte istovremeno dve trgnute reči, pa ih nalepite ** 1. Pomerite kursor na liniju ispod obeleženu sa ---> 2. Postavite se na bilo koje slovo reči ’Pera’ i otkucajte "ayiw PAMĆENJE: u registar(") (a) (y)ank [trgni] (i)nner [unutrašnju] (w)ord [reč] 3. Postavite se unapred na reč ’kolačića’ (fk ili $B ili /ko<enter>) i otkucajte "byiw 4. Postavite se na bilo koje slovo reči ’Žika’ i otkucajte ciw<C-r>a<ESC> PAMĆENJE: (c)hange [izmeni] (i)nner [unutrašnju] (w)ord [reč] sa <sadržajem (r)egistra> (a) 5. Postavite se na bilo koje slovo reči ’torte’ i otkucajte ciw<C-r>b<ESC> ---> a) Od sada će Pera biti zadužen za sledovanja kolačića b) U tom smislu, Žika će samostalno odlučivati o sudbini torte NAPOMENA: U registre može i da se briše, npr. "sdiw će obrisati reč pod kursorom u registar s. REFERENCE: Registri :h registers Imenovani registri :h quotea Pokreti :h motion.txt<enter> /inner<enter> CTRL-R :h insert<enter> /CTRL-R<enter> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 2.1.2: REGISTAR IZRAZA ** Umećite rezultate izračunavanja „u letu” ** 1. Pomerite kursor na liniju ispod obeleženu sa ---> 2. Postavite se na bilo koju cifru broja u njoj 3. Otkucajte ciw<C-r>=60*60*24<enter> 4. U narednoj liniji, pređite u režim umetanje i dodajte današnji datum pomoću <C-r>=system('date')<enter> NAPOMENA: Svi pozivi operativnom sistemu zavise od sistema na kojem se izvršavaju, npr. na Windows upotrebite system('date /t') ili :r!date /t ---> Zaboravio sam koliko sekundi ima u danu, 84600 je l’ da? Danas je: NAPOMENA: isto može da se postigne sa :pu=system('date') ili sa manje pritisaka na tastere: :r!date REFERENCA: Registar izraza :h quote= ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 2.1.3: BROJČANI REGISTRI ** Pritiskajte yy i dd i uočite efekat koji imaju na registre ** 1. Pomerite kursor na liniju ispod obeleženu sa ---> 2. trgnite nultu liniju, pa zatim pogledajte sadržaje registara sa :reg<enter> 3. obrišite liniju 0. sa "cdd, pa zatim pogledajte sadržaje registara (gde očekujete da vidite liniju 0?) 4. nastavite da brišete svaku narednu liniju, posmatrajući usput registre sa :reg NAPOMENA: trebalo bi da primetite kako se brisanja celih linija pomeraju niz listu nakon dodavanja novih obrisanih linija 5. Sada (p)aste [nalepite] sledeće registre u redosledu: c, 7, 4, 8, 2. tj. sa "7p ---> 0. Ovo 9. lelujavo 8. tajna 7. je 6. na 5. osi 4. jedna 3. ratna 2. poruka 1. poštovanja NAPOMENA: brisanja kompletnih linija (dd) mnogo duže ostaju u brojčanim registrima u odnosu na trganja celih linija ili brisanja koja koriste manje pokrete REFERENCE: Brojčani registri :h quote0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 2.1.4: LEPOTA MARKERA ** Izbegavanje aritmetike kod neiskusnih programera ** NAPOMENA: uobičajen problem prilikom pisanja koda je premeštanje velikih delova koda. Sledeća tehnika pomaže da se spreči potreba za izračunavanjima broja linije koji je potreban u operacijama kao što su "a147d ili :945,1091d a ili još gore, prvobitnom upotrebom i<C-r>=1091-945<enter> 1. Pomerite kursor na liniju ispod obeleženu sa ---> 2. Pređite na prvu liniju funkcije i markirajte je sa ma NAPOMENA: tačna pozicija unutar linije NIJE bitna! 3. Pomerite se na kraj linije i onda na kraj bloka koda sa $% 4. Obrišite blok u registar sa "ad'a PAMĆENJE: u registar(") (a) postavi (d)eletion [brisanje] od kursora do LINIJE koja sadrži marker(') (a) 5. Nalepite blok između BBB i CCC sa "ap NAPOMENA: vežbajte više puta ovu operaciju da bi vam postala prirodna ma$%"ad'a ---> AAA function itGotRealBigRealFast() { if ( somethingIsTrue ) { doIt() } // taksonomija naše funkcije se izmenila pa više nema // azbučnog smisla na svojoj trenutnoj poziciji // zamislite stotine linija koda // naivno biste se pomerili na početak i kraj i zapisali ili // zapamtili oba broja linije } BBB CCC NOTE: markeri i registri ne dele prostor imena, tako da je registar a potpuno nezavisan od markera a. Ovo nije slučaj sa registrima i makroima. REFERENCE: Markeri :h marks Pokreti markera :h mark-motions (razlika između ' i `) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ REZIME lekcije 2.1 1. Da sačuvate (trgnete, obrišete) tekst u, i vratite (nalepite) iz, ukupno 26 registara (a-z) 2. Trgnite celu reč sa bilo koje pozicije unutar reči: yiw 3. Izmenite celu reč sa bilo koje pozicije unutar reči: ciw 4. Umetnite tekst direktno iz registra u režimu umetanje: (C-r)a 5. Umetnite rezultate prostih aritmetičkih operacija: (C-r)=60*60<enter> u režimu umetanja 6. Umetnite rezultate sistemskih poziva: (C-r)=system('ls -1') u režimu umetanja 7. Pogledajte sadržaj registara sa :reg 8. Naučite krajnje odredište brisanja kompletnih linija: dd u brojčane registre, tj. opadajući od 1 - 9. Imajte na umu da se brisanja celih linija održavaju u registrima duže od bilo koje druge operacije 9. Naučite krajnja odredišta svih trganja u brojčane registre i koliko se tamo zadržavaju 10. Postavljajte markere iz komandnog režima m[a-zA-Z0-9] 11. Premeštajte po linijama na marker sa ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ovim se završava drugo poglavlje Vim priručnika. Još uvek se radi na njemu. Ovo poglavlje je napisao Pol D. Parker. Preveo na srpski Ivan Pešić. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~