PočetnaOstaloTechEmacs & Vi(m) – postoji li pobjednik?

Emacs & Vi(m) – postoji li pobjednik?


Jeste li ikada koristili najobičnije tekst editore i bili frustrirani njihovim ograničenjima? Mi jesmo, stoga smo odlučili koristiti naprednije tekst editore i vidjeti koji je bolji u kojem segmentu. Ne, nećemo se baviti običnim prepucavanjima koja su postala uobičajena u IT svijetu, nego realno sagledati sve činjenice i ostaviti vama da odlučite koji editor je bolji i zbog čega. Vi i Emacs su dio hakerske kulture i vjerujemo da ste čuli za njih, no vjerojatno mnogi nisu nikada koristili niti jedan od spomenutih programa. Što je šteta – nadamo se da budete nakon pročitanog teksta. Također, ove editore mogu koristiti oni koji prvenstveno koriste Unix-bazirane operativne sustave (Linux, FreeBSD, Mac OS X …), s time da Vi dolazi instaliran na iste, dok Emacs morate skinuti – bilo ručno ili putem softver managera. U svakom slučaju, pogledajmo što nam nude, koje su im prednosti i mane i za što uopće možete koristiti ove editore.

GNU Emacs

Emacs je, kao što smo rekli, napredni tekst editor i jedan od najstarijih editora uopće. Prije nego se pozabavimo povijesti Emacsa, moramo napomenuti da je Emacs možda najsloženiji editor na svijetu kojeg je moguće proširivati i modificirati na mnogo načina. Emacs ima ugrađenih preko 2000 komandi i makroa koji će vam pomoći da u malo vremena obavite puno posla. No ne dajte se zavarati – da biste postali Emacs „guru“ morati ćete prilično puno učiti i koristiti isti kako biste stekli praksu i rutinu u obavljanju određenih poslova. Inače, riječ Emacs dolazi od riječi „Editor MACroS“.

Kako bismo vam dočarali Emacs u potpunosti, moramo krenuti od početka. Prije gotovo 36 godina (1976.) Richard Stallman i Guy L. Steele su napravili ovaj editor, no to nije bila njihova ideja. Prvi „moderni“ tekst editor počeli su razvijati hakeri na MIT-u i Stanfordu, a kako je Stallman bio čest gost na tim fakultetima, bio je upoznat sa razvojem, te je odlučio „posuditi“ ideju, dodati nekoliko svojih funkcija i napraviti najmoderniji editor tada. Da je uspio u naumu, govori činjenica da danas gotovo svi hakeri koriste Emacs i on još uvijek može konkurirati tekst editorima na tržištu.

Tijekom godina Emacs se razdvojio na nekoliko inačica – originalni GNU Emacs, o kojem će kasnije biti riječi, te na modificirane verzije poput XEmacsa. XEmacs je razvio LISP haker Jamie Zawinski kada je 1991. godine počeo raditi za Lucid Inc. (baziran na GNU Emacsu 19) i to je jedna od najpopularnijih modifikacija, ali ne i najbolja. Također, postoje i neke ekstremno čudne modifikacije poput verzije Meadow – japanska verzija razvijena za MS Windowse. Nećemo ih sve nabrajati, no vrijedne spomena su MicroEMACS, JOVE, Freemacs, Zile, JED, te EmACT. Nas ipak zanima „originalna“ verzija koja se danas koristi. Nakon 8 godina razvoja, Stallman je počeo raditi na novoj inačici nazvanoj GNU Emacs, te je 1984. godine izašla verzija 13 (verzije 2-12 nikada nisu ni postojale). Prva javna verzija je 15 koja je izašla godinu dana kasnije, te se nastavila razvijati sve do danas kada nosi naziv GNU Emacs 24. I tu počinje naša priča o Emacsu i njegovim mogućnostima.

Karakteristike i mogućnosti

Ako ste mislili da će vam Emacs zamijeniti MS Word ili LibreOffice Writer – u krivu ste. Spomenuti dvojac se bazira na grafičkom uređenju teksta, odnosno dopušta vam da vrlo brzo mijenjate font, veličinu slova, boju, ubacujete u tekst poveznice, grafove, slike – Emacs ne. On se više bazira na manipulaciji teksta, odnosno dijelovima teksta, te programiranju (zamjena za IDE).

Prva značajnija odlika Emacsa (i Vima) je definitivno mogućnost modificiranja. Skoro sve funkcije koje imate u GNU Emacsu, od običnih funkcija uređivanja teksta do egzekucije kôda, su pozivanje LISP funkcija. Da pojasnimo – Emacs je napisan u programskim jezicima C i LISP-u (Emacs Lisp) te sve što radite je zapravo pozivanje LISP funkcija. Kada pritisnete određenu kombinaciju tipki na tipkovnici i recimo kopirate tekst – pozvali ste LISP funkciju. Kada pokrenete kompajliranje kôda – pozvali ste LISP funkciju. Taj pomalo čudni način rada i dizajna rezultirao je time da svako tko je sposoban napisati kôd može modificirati Emacs kako god njemu odgovara. Zapravo, postoje 3 načina na koji možete modificirati ovaj editor:

– prilagođavanjem postojećih ekstenzija – namijenjeno početnicima jer ne moraju previše „petljati“ po postojećem kôdu nego mogu vrlo lako podesiti određene varijable i tako napraviti malu i brzu modifikaciju (boje, veličina, uvlačenje teksta/paragrafa i slično)

– putem ugrađenih kratica na tipkovnici i pozivanjem makro funkcija kako biste automatizirali kompleksnije zadatke (preko 2000 kratica i funkcija – zato će vam trebati određeno vrijeme da svladate osnove)

– korištenjem Emacs Lispa (poseban mod za pisanje LISP kôda), te kreiranjem .emacs datoteka koje će se učitavati zajedno sa editorom i dodati određene funkcije istom. Definitivno nije za početnike i namijenjeno je profesionalnim programerima i hakerima, no dopušta vam neviđene modifikacije

Vidite zašto smo rekli da je Emacs možda najkompleksniji editor na svijetu – nema ograničenja u modificiranju, a ujedno dolazi i sa mnogo ugrađenih biblioteka (engl. library) i ekstenzija koje će vam pomoći da u njemu radite i neke druge stvari. Recimo AUCTeX je ekstenzija koja vam može pomoći da unutar Emacsa kreirate LaTeX dokument. W3 vam omogućava da unutar Emacsa surfate po Internetu. SES ekstenzija vam zamjenjuje Excel/Impress/Calc aplikacije i dopušta vam kreiranje tabličnog proračuna, View Mail da možete čitati i odgovarati na emailove direktno iz Emacsa itd. Ako se uspijete naučiti na to i uspijete povezati sve te odlične funkcije koje vam Emacs pruža, garantiramo vam da više nikada nećete koristiti 10 različitih aplikacija nego samo jednu. Kad vam još kažemo da sa dobrim makroima nećete uopće više morati micati ruke sa tipkovnice, mislimo da nema razloga da i sami ne probate Emacs i naučite nešto novo. Nadalje, na Internetu postoje i neke modifikacije koje su radili korisnici, pa ih slobodno potražite i implementirajte u Emacs, a ako vam ne odgovaraju modificirajte ih sami.

Performance i modovi

Kada je prvi puta Emacs predstavljen javnosti, problem je bio u njegovoj veličini i brzini. Nažalost, puno je memorije zauzimao, a računala su bila prilično slaba, odnosno bila su jedva dovoljna da pokrenu Emacs i da se u njemu normalno radi. Danas je situacija nešto drugačija – računala su 100 puta jača, imaju puno više memorije, no Emacs je i dalje sporiji od konkurencije (prvenstveno mislimo na Vim). Razlog tome su svi silni dodaci koji dolaze s njime, no pošto se brzina mjeri desetinkama sekunde, nećemo im previše zamjeriti.

Ne postoji razlika u brzini rada Emacsa na Linuxu (ili drugim Unix baziranim operativnim sustavima) i Windowsima, no nekako je prirodnije Emacs vidjeti na prvo spomenutom Linuxu (pa čak i Mac OS X-u). Kako bi se rasteretio rad Emacsa i povećala brzina, napravljeni su Emacs modovi. Kada nešto radite, odaberete mod sukladan vašim potrebama. Kada pišete običan tekst – koristiti ćete ‘Normal Mode’. Kada pišete kôd određenog programskog jezika, odabrati ćete mod za taj jezik (radi lakšeg pisanja koda, osvjetljivanja ključnih riječi, uvlačenja blokova …). Kada pišete LaTeX dokument, odabrati ćete Tex mod itd. Emacs vam nudi jako puno glavnih i sporednih modova na što svakako obratite pozornost. Mijenjati modove možete jako brzo, pa ovo nije nikakva gnjavaža – dapače, vrlo je korisno.

Ostalo

Nažalost, ne možemo spomenuti sve ono dobro što dolazi sa Emacsom, no moramo vam skrenuti pozornost na još neke sitnice, te vas uputiti na dodatnu literaturu. Kao prvo, Emacs dolazi sa priručnikom koji će vam pokazati kako koristiti editor, gdje potražiti pomoć, kako se snaći u svim onim kraticama i oznakama koje se nalaze na ekranu itd. Također, tu su i ugrađene „help“ datoteke u kojima su objašnjene sve kratice koje možete koristiti, makro funkcije, spomenuti modovi i slično. No, to nije dovoljno, odnosno sva ta pomoć i dokumentacija nisu dovoljne da sistematski naučite koristiti Emacs. Bolje je koristiti knjige i tekstove koje možete naći na Internetu. Naša omiljena knjiga je Learning GNU Emacs (O’Reilly) nakon koje ćete Emacs poznavati jako dobro, a uvijek vam može poslužiti i kao knjiga kojoj ćete se vratiti kada trebate pomoć.

Vi(m)

Kao što ste mogli primijetiti, ponekad smo u tekstu Emacs uspoređivali sa tekst editorom Vi, a ponekada sa editorom Vim. U čemu je razlika? Usporedno sa Emacsom, 1976. godine je nastao editor Vi, a 15 godina kasnije njegova poboljšana verzija Vim (Vi iMproved). Iako ćemo mi danas govoriti o ovoj potonjoj verziji, nemojte da vas to zbuni. Sa Linux distribucijama ćete dobiti Vi editor (pošto je on de facto postao standardni Unix editor), dok možete preko Softver managera skinuti Vim. Obje verzije su vrlo slične i imaju mnogo toga zajedničkoga, no današnjim generacijama će se Vim više svidjeti, a evo i zašto.

1991. godine je Bram Moolenaar odlučio prepraviti Vi na svoj način, te osim komandne linije i upravljanja pomoću komandi, dodao i grafičko sučelje radi lakšeg upravljanja. To je prvi razlog zašto bi vam se Vim mogao svidjeti. Iako je prvenstveno Vim napravljen za Amigu, danas ga se može pokrenuti na Unixu, Linuxu, MS Windowsima, iOS-u i Androidu. Prije 6 godina je dobio i nagradu za najpopularniji editor u Linux zajednici.

Sučelje i upravljanje

Za razliku od Vi-ja, Vim-ovo se sučelje ne bazira samo na menijima, nego na pravom grafičkom sučelju, iako ono nije previše izraženo. Željela se zadržati originalna ideja i upravljanje pomoću komandne linije, pa ako se i odlučite koristiti Vi ili Vim morati ćete naučiti koristiti komandnu liniju i ugrađene naredbe. To je jedini način da ga u potpunosti iskoristite. Grafičko sučelje vam može biti super u početku dok se ne naučite koristiti tipkovnicu i sve radnje pokretati putem nje.

Kada smo već kod početnika, Vim ima ugrađeni tutorial za početnike (upišite naredbu „vimtutor“). Također, ima ugrađen i priručnik u kojem su objašnjene sve mogućnosti istog. Što god vam treba možete tamo pogledati, no mi ćemo vam opet preporučiti knjigu – Vim and Vi Tips: Essential Vim and Vi Editor Skills. Postoji i help datoteka koju ćete pozvati sa naredbom :help.

Modificiranje

Već je svima jasno zašto su Emacs i Vim tako popularni – zbog modificiranja, odnosno nisu limitirani svojim mogućnostima pa ih je moguće nadograditi. Emacs se nadograđuje pisanjem ekstenzija u ELispu, dok Vim koristi Vim skripte (vimscripts). One vam omogućuju da kompleksne radnje automatizirate i da brže obavljate svakodnevne poslove. Vim dolazi sa određenom kolekcijom tih istih skripti, koje ćemo zvati pluginovi, a možete ih i sami napisati. Ako vam se ne sviđa skriptiranje u spomenutom jeziku, možete skripte pisati i u Lui, Pythonu, Perlu, Rubyju, Racketu (PLT Scheme) i Tcl-u.

Uz pluginove za automatizaciju kompleksnih radnji, Vim dolazi i sa ugrađenim naredbama i makroima koje ćete pozivati sa kraticama na tipkovnici (broj je nešto manji nego kod Emacsa). Njih također možete modificirati, odnosno personalizirati ako želite. Ne preporučamo previše personalizacije u tome smislu.

Što se kompatibilnosti Vi-ja i Vim-a tiče, moramo napomenuti da Vim dolazi sa ugrađenim „vi kompatibilnim modom“ koji može pokrenuti sve što i Vi, no donosi i mnoga poboljšanja. Ona uključuju bolje uspoređivanje i spajanje datoteka, opsežniji help sistem i pomoć kod pisanja tekstova/programskog kôda/LaTeX dokumenata, prošireni REGEX, veću podršku za skriptne jezike, lakše i brže pisanje programskog kôda (bolje uvlačenje i osvjetljavanje sintakse), bolje korištenje miša (većinom je to zbog GUI-ja), editiranje kompresiranih datoteka (gzip, bzip2, zip, tar), slanje i primanje datoteka preko FTP-a, spell checking, horizontalno i vertikalno dijeljenje ekrana na prozore, UNICODE podršku i još mnogo toga. Kao što vidite, mnoge navedene stavke su izrazito važne i bolje je koristiti Vim nego Vi. Osim ako ste „old-school“ haker i baš želite koristiti Vi (op.a. osobno bi vas nazvao mazohistima).

Za što koristiti Vim

Pa Vim možete koristiti za gotovo sve, no ruku na srce, većinom će ga koristiti programeri za programiranje. Svi editori se gledaju kroz oči programera – može li pokrenuti ovaj kôd, donosi li kakve super mogućnosti koje IDE nema i slično. Mi ćemo vam sada navesti 6-7 razloga zbog kojih biste trebali razmisliti o napuštanju IDE-a kojeg trenutačno koristite i prijeći na Vim.

Recimo, prvi razlog je što Vim govori istim jezikom kao i vi. Dobro, možda dok programirate ne pričate na glas (iako to ne bi bilo ništa čudno), no sigurno razmišljate u stilu – kopiraj ove 3 linije kôda i zalijepi ih 3 linije dolje. U vimu je to „3yy 3j p“. Želite izbrisati 3 slijedeće riječi – „d3w“ (delete 3 words). Obriši sve do kraja linije – „d$“. Vim vas u potpunosti razumije, samo vi morate razumjeti njega i naučiti kratice. Znate i sami da pravi programeri rade mnogo više od pisanja kôda. Oni razmišljaju o napisanome, optimiziraju isti, eksperimentiraju. Vim će vam olakšati posao i sa par kratica na tipkovnici ćete samo letjeti po ekranu, a miš nećete ni dotaknuti. Da ne govorimo koliko ćete produktivniji biti jednom kada naučite koristiti sve ponuđeno.

Nadalje, Vim vam dopušta da se sa kraticama prebacujete po određenim „zakonima“. Možete se prebacivati gore dolje po linijama koda, paragrafima, blokovima, metodama – što god zamislite možete napraviti. Uz to, brzo možete pozvati search kutiju te naći varijablu koju želite i isto tako lako ju zamijeniti sa nekom drugom.

Nama osobno se sviđa i mogućnost modificiranja boja kod osvjetljavanja sintakse. Želite da ime metode bude crveno – nema problema. Ključna riječ „new“ će biti zelena – čas posla. Sve je tako lako modificirati, da se IDE čini kao zastarjeli softver iz prošlog stoljeća! Ironično, pošto je Vim star 20 godina, a radi puno bolje nego većina novih IDE-a.

Tu su još i mala veličina softvera, portabilnost, minimalizam sučelja, mogućnost pokretanja Vima čak i na mobitelu, te najbolje od svega – osjećati ćete se super kada ga počnete u potpunosti koristiti. Zaboraviti ćete da išta drugo postoji. Neki stariji programeri, poput Joshue Blocha (iskusni Java programer i jedan od glavnih ljudi u Googleu), kažu da su im se kratice iz Emacsa i Vima urezale u mozak i da više ne mogu bez njih. To govori dovoljno za sebe.

Razlike i prednosti Emacsa i Vima

Ako smo vas ovim tekstom zainteresirali za jedan od ovih tekst editora, vjerujemo da ćete htjeti još malo sami pročitati o njima i vidjeti što oni nude. Dapače, voljeli bismo da to napravite. No, pripremite se na jednu stvar – bilo da čitate tekstove o Emacs ili Vimu, naići ćete na jako puno komentara koji su, jednom riječju, glupi. Druge riječi nema – to vam je ista prepirka poput one na relaciji Android-iPhone. Jedni govore jedno, drugi drugo, a mnogi komentari su jednostavno neutemeljeni. Preporučamo vam da preskočite sekciju sa komentarima i sami izvučete neke zaključke. Sad kada smo to rekli, ostaje nam još malo usporedimo ova dva editora.

Kratice na tipkovnici – Emacs ima gotovo fiksne kratice na tipkovnici, koje kada stisnete će nešto napraviti. Kopirati dio teksta, preskočiti liniju ili slično. Vim ima određeni „put“, odnosno neke kratice mogu imati više značenja – ako recimo stisnete kraticu 1 (nebitno što je ona), pa kraticu 2 Vim će učiniti jedno, a kad stisnete kraticu 3, pa kraticu 2 nešto drugo. Taj put se naziva još i „decision tree“ i malo komplicira učenje kratica, ali nije veliki problem.

Korištenje memorije – Ovdje se nema puno toga za reći. Vim je manji i brži program, a samim time i uzima manje memorije i računalnih resursa. Emacsu treba nešto duže da se pokrene, no u samom radu i nema puno razlike u odnosu na Vim. Tj. nemoguće je raditi usporedbu na tako malim vremenskim odsječcima.

Grafičko sučelje – Oba editora se prvenstveno koriste komandnom linijom, no imaju kakvo takvo grafičko sučelje. Pa makar ono bilo i minimalno.

Podržane platforme – Vi se može koristiti na svim platformama koje mogu implementirati standardnu C biblioteku, a to su Unix, Linux, AmigaOS, DOS, Windows, Mac OS X, BeOS i POSIX sustav. Emacs se može pokrenuti većinom na unix-baziranim sustavima: Linux, BSD, SOlaris, AIX, IRIX, AmigaOS, Mac OS X, ali i na MS Windowsima i OpenVMS-u.

Jezici – Emacs postoji samo na engleskom jeziku, dok Vi imate na Engleskom, Kineskom, Francuskom, Talijanskom, Poljskom i Ruskom jeziku

Licenca pod kojom su napravljeni – Emacs pod GNU GPL licencom, a Vi free software, odnosno charityware

Zanimljivost/Humor

Richard Stallman je osnovao „Crkvu Emacsa“ (Church of Emacs) preko koje se pokušao našaliti sa Vi-jem. Rimski VI znači broj 6, a vi-vi-vi znači 666 što je simbol vraga. Iako Stallman nije prozvao Vi sotonskim softverom, korisnike je nazvao grešnicima, a sebe svetcem Emacs crkve (St iGNU-cius). Nije morao dugo čekati na odgovor – korisnici Vi editora su osnovali Kult Vi-ja (Cult of vi), te EMACS preimenovali u „Escape Meta Alt Control Shift“. Sve u svemu, i jedan i druga ekipa su se zabavile, a korisnicima ostavili na izbor koji će editor koristiti.


RELATED ARTICLES

Komentiraj

Please enter your comment!
Please enter your name here

- Advertisment -

Most Popular