Naprej Nazaj Kazalo

2. Uporaba Emacsa

2.1 Zagon in zapustitev Emacsa

Kot novi uporabnik Emacsa ga bomo sprva verjetno hoteli pognati in preskusiti. A ko smo enkrat v njem in ga želimo zapustiti, tega verjetno sprva ne bomo znali. Če ga nismo še nikoli uporabili, ga poskusimo pognati prav zdaj. V svoji ukazni lupini za pozivnikom vpišimo emacs in pritisnimo tipko Enter. Emacs bi se moral zagnati. Če se ne zažene, bodisi ne leži v poti do programov bodisi ni nameščen.

Ko pa smo uspešno pognali Emacs, se moramo naučiti, kako ga zapustimo. Vtipkati moramo ukaz C-x C-c. Pisava C-x pomeni, da pritisnemo tipko Ctrl, jo pridržimo, nato pritisnemo še tipko x, zatem pa popustimo x in še Ctrl. V zgornjem primeru moramo za prvim delom pritisniti in pridržati še tipko Ctrl in pritisniti c, da zapustimo urejevalnik.

Morebiti se nam bodo sprva zdeli Emacsovi ukazi čudni, nenavadni in celo nerodni, posebej če smo vajeni urejevalnika vi. V nasprotju z urejevalnikom vi Emacs nima posebnih načinov za vnašanje besedila in ukazov.

Na kratko: ukaz emacs požene urejevalnik Emacs. Z Emacsovim ukazom C-x C-c urejevalnik zapustimo.

Kaj vidimo?

Ko poženemo Emacs, njegov izpis zasede vse okno X ali zaslon, če ga poganjamo v konzoli. Na vrhu opazimo menujsko letev, v srednjem delu nekaj besedila in nekaj vrstic na dnu.

Zaslon je podoben tej skici z znaki:

+----------------------------------------------------------------------+
|Buffers Files Tools Edit Search Mule Help                             |
|                                                                      |
|Welcome to GNU Emacs, one component of a Linux-based GNU system.      |
|                                                                      |
|                                                                      |
|                                                                      |
| ...                                                                  |
|                                                                      |
|---1:---F1  *scratch*         (Lisp Interaction)--L1--All-------------|
|For information about the GNU Project and its goals, type C-h C-p.    |
+----------------------------------------------------------------------+

Različica v slovenskem jeziku pa je takšna:

+----------------------------------------------------------------------+
|Buffers Files Tools Edit Search Mule Help                             |
|                                                                      |
|Dobrodošli v GNU Emacs, sestavnem delu sistema GNU v Linuxu.          |
|                                                                      |
|                                                                      |
|                                                                      |
| ...                                                                  |
|                                                                      |
|---1:---F1  *scratch*         (Lisp Interaction)--L1--All-------------|
|Pritisnite C-h C-p, da dobite opis projekta GNU in njegovega namena.  |
+----------------------------------------------------------------------+

Opomba: Emacs običajno zavzame celotno okno ali zaslon. Zgornjo skico sem okrnil, da bi jo lahko prikazal na omejenem prostoru. Ko prvič poženemo Emacs, bomo opazili pozdravno sporočilo. Da bi prihranil prostor, sem njegovo vsebino izpusti in jo nadomestil z znaki ,,...''. Pozdravno sporočilo navaja različico Emacsa, ki ga uporabljamo, in nas vabi, da si ogledamo dostopno pomoč na zvezi.

Menujska letev

Vrhnja vrstica v Emacsovem vmesniku je menujska letev (ang. menu bar). Če poganjamo Emacs v oknih X, se bodo izbire v menuju obnašala kot običajni potezni menuji (ang. pull-down menu), do katerih pridemo z miško. Drugače pa moramo za dostop do menujev uporabiti tipkovnico z ustreznimi bližnjicami tipk, o čemer tu ne govorimo.

Statusna vrstica in pogovorni vmesnik

Zgornja od zadnjih dveh vrstic Emacsovega vmesnika je statusna letev (ang. status bar). Vsebuje podatke o vmesniku, v katerem delamo, o načinu dela v trenutnem vmesniku in podobne koristne informacije. Zaenkrat se zadovoljimo s tem, da se zavedamo obstoja te letve.

Najspodnejša vrstica se imenuje pogovorni vmesnik (ang. mini-buffer). Od osrednjega vmesnika (ang. main buffer) ga na zaslonu loči pravkar opisana statusna letev. Pogovorni vmesnik si lahko zamišljamo kot Emacsovo ukazno vrstico. Vanj vnašamo ukaze, ki jih dajemo Emacsu, in v njem nam Emacs izpisuje svoja sporočila in odgovore na naše ukaze.

Ugotovili boste, da tistemu, kar sem pravkar imenoval statusna letev (ang. status bar), Emacsova dokumentacija pravi načinovna vrstica (ang. mode line). To je mesto, kjer Emacs prikazuje podatke o načinu ali načinih dela v trenutnem vmesniku kot tudi trenutni datum in čas, zaporedno številko vrstice, velikost datoteke, torej skoraj vse, kar bi si želeli videti v tej vrstici.

2.2 Nekaj o terminologiji

Ta razdelek obravnava najbolj osnovno terminologijo Emacsa. Potrebno jo je poznati, de bomo lahko brali o Emacsu in ga uporabljali.

Vmesniki in datoteke

Za razliko od nekaterih drugih urejevalnikov datoteka, ki jo odpremo v Emacsu, ne ostane odprta ves čas dela. Namesto tega jo Emacs prebere v vmesnik (ang. buffer) v pomnilniku. Ko urejamo datoteko, se njena vsebina na disku ne spremeni, dokler vsebine vmesnika na shranimo na disk. Tak način dela ima svoje prednosti in slabosti, a trenutno je pomembno le, da razumemo ta pristop.

Posledica tega je, da to isto besedo uporabljamo v Emacsovi dokumentaciji, načinih, paketih in tako naprej. Pomeni nam trenutno vsebino datoteke v pomnilniku. Eh, potrebno je omeniti, da vmesnik ni nujno povezan s kakršnokoli datoteko na disku. Velikokrat Emacs ustvari vmesnik, v katerega bo shranil izhod ukazov, ki smo jih izvedli. Nekateri vmesniki bodo vsebovali izpis ukaza, seznam izbir, med katerimi lahko izbiramo, in podobno.

Točka in območje

V Emacsovem žargonu bomo velikokrat slišali za točko (ang. point) ali o njej brali. V splošnem je točka utripalka (ang. cursor). Natančen razloček med točko in utripalko na začetku verjetno ni odločilen. A če ste radoveni, si predstavljajte razliko takole: utripalka je vidni prikaz točke. Utripalka je vselej vidna na določenem mestu trenutnega vmesnika. Točka pa nasprotno prebiva v prostoru med dvema znakoma trenutnega vmesnika. Če vidimo utripalko na črki ,o' besede ,,zob'', to pomeni, da je točka v resnici med črkama ,z' in ,o'.

Emacs omogoča urejanje vmesnika kot mnogi sodobni urejevalniki z naslednjimi funkcijami: zamikanje (ang. indent), črkovanje (ang. spell-check), preoblikovanje (ang. reformat), izrezovanje (ang. cut), prepisovanje (ang. copy), lepljenje (ang. paste) in podobno na delu besedila trenutnega vmesnika. Označimo (ang. mark) lahko besedilo s poudarjanjem (ang. highlight), tako da uporabimo miško, in nato izvedemo ukaz le na izbranem območju besedila. Tak del besedila se v Emacsu imenuje območje (ang. region).

Okna

Res je, nadaljevanje bo zmedlo marsikoga, ki je že uporabljal grafični vmesnik. Spomniti pa se moramo, da je bil Emacs razvit veliko preden so postali popularni grafični vmesniki in okenski upravljaniki.

Okno (ang. window) v Emacsu je območje na zaslonu, v njem pa je prikazan vmesnik. Ko Emacs prvič poženemo, dobimo na zaslonu le eno okno. Nekateri ukazi (denimo pomoč ali dokumentacija) v Emacsu odpro dodatna začasna okna na Emacsovem zasonu.

Emacsovo okno nima nič skupnega z okni X v smislu grafičnega vmesnika. Odpremo lahko dodatna okna X, v katerih prikažemo Emacsove vmesnike, denimo za vzporedno primerjavo vsebine dveh datotek, ta nova okna X pa se imenujejo v Emacsovem žargonu okvirji. Nadaljujte z branjem!

Okvirji

V Emacsu je okvir (ang. frame) ločeno okno X, ki prikazuje nek Emacsov vmesnik. A vsa so del iste Emacsove seje. Obnašajo se skoraj tako, kot če v Netscapovem Navigatorju uporabimo ukaz Alt+N.

2.3 Osnove tipkovnice

Ta razdelek opisuje osnove igranja na tipkovnico v Emacsu. Kot v večini zmogljivih urejevalnikov, je tudi v Emacsu vse, kar lahko v njem storimo, od nas oddaljeno le nekaj pritiskov na tipke.

Če ste uporabnik urejevalnika vi, ste se nekaj časa morali privajati na tipke k, j, l, h, s katerimi se v njem pomikamo za vrstico navzgor ali navzdol ali za znak naprej ali nazaj. Priznajmo, da smo potrebovali nekaj ur ali tednov, da smo se jim privadili in jih začeli udobno uporabljati za premikanje po datoteki.

Emacs se v tem ne razlikuje. Tudi tu se moramo naučiti različnih pritiskov tipk in ukazov. Kakor v vi se moramo naučiti le nekaj osnov, pa že lahko opravimo večino dela. Sčasoma se lahko počasi priučimo tudi drugih ukazov in razširimo svoje znanje, tako da znamo vedno hitreje opraviti svoje stvari.

Ukazne tipke (Meta, Esc, Control in Alt)

Kot se bomo kmalu naučili, Emacs zelo pogosto uporabljamo z večtipkovnimi kombinacijami, akordi. Ker Emacs ni načinovni urejevalnik (ang. modal editor), kakršen je vi, nam ni potrebno pomniti, kdaj smo v ,,ukaznem'' (ang. command mode) ali ,,urejevalnem'' načinu (ang. editing mode), da bi premaknili utripalko ali izvedli ukaz. Zato večinoma le pritisnemo pravo zaporedje ukazov in Emacs nas (običajno) takoj uboga.

Tipke, ki jih Emacs uporablja najpogosteje, so v dokumentaciji navedene takole C za tipko Control ali Ctrl in M za tipko Meta. Medtem ko ima večina sodobnih osebnih računalnikov eno ali več tipk, ki so označene s Ctrl, imajo le redki tipko z oznako Meta. V mislih vselej nadomestimo tipko Meta z eno od tipk Esc ali Alt. V večini običajnih primerov se obnašata tipki Esc in Alt enako.

Kadarkoli potemtakem vidite v Emacsovi dokumentaciji sklic na C-x f, to pomeni ,,pritisnite Control-x in zatem tipko f''. In če vidite omenjeno kaj podobno temu M-x shell, to v resnici pomeni ,,pritisnite alt-x in vpišite besedo shell''.

Za začetnika zelo koristen ukaz je M-x apropos ali skrajšano C-h a. Ukaz apropos preišče Emacsovo dokumentacijo na zvezi in poišče vse funkcije, katerih imena ustrezajo regularnemu izrazu, ki smo ga vpisali. Na ta način na primer zlahka poiščemo vse ukaze, ki so povezani z okvirji (ang. frame). Preprosto vnesemo C-h a in zatem vpišemo frame.

Premikanje po vmesniku

Ko smo spoznali, kaj pomenijo čudne okrajšave zaporedij tipk, je čas, da si ogledamo seznam najpogostejših ukazov za premikanje po vmesniku:

tipke       učinek
-----------------------------------
C-p         navzgor za vrstico
C-n         navzdol za vrstico
C-f         naprej za znak
C-b         nazaj za znak
C-a         začetek vrstice
C-e         konec vrstice
C-v         navzdol za celo stran
M-v         navzgor za celo stran
M-f         naprej za besedo
M-b         nazaj za besedo
M-<         začetek vmesnika
M->         konec vmesnika
C-g         prekini trenutni ukaz
-----------------------------------

In kot bi si želeli, tudi smerne tipke (tiste s puščicami) običajno delujejo po naših pričakovanjih. Tipka vračalka (ang. backspace) pa morebiti ne. A to je druga zgodba. :-(

Najpomembnejši ukazi

Potem ko smo se naučili, kako se premikamo po vmesniku, ali smo že pripravljeni tudi za odpiranje in shranjevanje datotek? Morebiti celo za iskanje? Ja, tukaj bomo našli teh nekaj najpomembnejših ukazov.

Preden pa se zapodimo med ukaze, naj na kratko pojasnim, kako delujejo.

Vsi ,,ukazni akordi'' v Emacsu (ti, ki jih zapišemo kot M-nekaj ali C-nekaj) so v resnici le bližnjice do funkcij, ki so del Emacsa. Vsako izmed funkcij lahko pokličemo po njenem imenu, tako da vpišemo M-x ime-funkcije in pritisnemo Enter. Če pa je na tipkovnico prilepljena bližnjica do te funkcije, zadošča, da uporabimo bližnjico.

Emacsova funkcja, ki shrani vsebino vmesnika na disk, se imenuje save-buffer. Privzeto je pripeta na akord C-x C-s. Da bi shranili vmesnikovo vsebino, lahko pritisnemo akord ali pa vpišemo M-x save-buffer in dosežemo popolnoma enak učinek.

Vse najpogosteje uporabljane funkcije imajo vnaprej prirejene akorde. Nekaj jih navajamo spodaj.

akord       funkcija           opis
-------------------------------------------------------------------
C-x C-s     save-buffer        shrani trenutni vmesnik na disk
C-x u       undo               razveljavi zadnji ukaz
C-x C-f     find-file          odpri datoteko na disku
C-s         isearch-forward    poišči niz znakov v smeri naprej
C-r         isearch-backward   poišči niz znakov v smeri nazaj
            replace-string     poišči niz znakov in ga zamenjaj
            replace-regexp     poišči regularni izraz in ga zamenjaj
C-h t       help-with-tutorial poženi učenje Emacsa s prvim berilom
C-h f       describe-function  izpiši opis funkcije
C-h v       describe-variable  izpiši opis spremenljivke
C-h x       describe-key       izpiši pomen akorda
C-h a       apropos            poišči dokumentacijo z regularnim izrazom
C-h F       view-emacs-FAQ     prikaži odgovore na pogosta vprašanja o Emacsu
C-h i       info               izpiši dokumentacijo o Emacsu
C-x r m     bookmark-set       označi trenutno mesto z zaznamkom
C-x r b     bookmark-jump      skoči na zaznamek
-------------------------------------------------------------------

Ko bomo uporabljali te funkcije, bomo opazili, da mnoge od nas pričakujejo vnos. Tega vselej vnesemo v pogovornem oknu, kar spominja na ukaze : v vi.

V Emacs je vgrajenih dobesedno stotine funkcij, ki so vse dosegljive. Zgornji seznam je le izvleček ukazov, ki jih uporabljam najpogosteje. Za bolj podrobne opise, kaj te funkcije počno, in za njihov popolnejši seznam pa si moramo ogledati neposredno pomoč.

Dopolnjevanje s tipko Tab

Podobno kot mnoge priljubljene ukazne lupine v Unixu (bash, csh, tcsh...) tudi Emacs omogoča dopolnjevanje imen ukazov s tipko Tab. Resnici na ljubo je treba priznati, da dopolnjevanje ukazov v lupini bash posnema to v Emacsu. Če ga uporabljamo v lupini, se nam bo prikupilo tudi v Emacsu.

Poskusimo ga uporabiti tako, da vnesemo M-x search in nato pritisnemo Tab. Emacs bo imenu dodal pomišljaj in tako označil, da obstaja mnogo imen, ki se vsa začno s tem nizom in imajo pomišljaj. Ponovimo pritisk na tipko Tab in Emacs bo prikazal vsa imena, ki se začno z izpisanim nizom. Opazimo, da Emacs za ta seznam odpre novo okno. Emacs začasno prepolovi prikazovalnik v dve okni. Eno vsebuje vmesnik, ki ga urejamo, drugo pa seznam vseh dopolnjenih imen, ki se začno na ,,search-''. Če pritisnemo ukaz za prekinitev C-g, zapustimo okno z izbiranjem in se vrnemo v prvotni vmesnik.

2.4 Prvo berilo, pomoč in strani info

Emacs ima za novince vgrajeno prvo berilo, ki nas popelje prek osnovnih ukazov za urejanje in funkcij, ki jih vsi uporabljamo. Tečaj nas tudi nauči, kako uporabljamo druge sisteme pomoči v Emacsu.

Priporočam, da si vzamemo čas in se sprehodimo skozi prvo berilo, če se želimo Emacsa res naučiti. Kot prikazuje zgornja preglednica, poženemo prvo berilo z akordom C-h t. Prvo berilo je namenjeno novincem, ki bi se radi samoizobrazili, narejeno pa je kot začetni tečaj.

Če poganjamo Emacs v oknih X, bomo opazili, da je skrajni menu v menujski letvi označen s Help. Ko raziskujemo, kaj nam Help nudi, najprej opazimo, da ima nekaj postavk v menuju na desni strani navedene akorde ukazov, s katerim jih na hitro poženemo.

Za konec si lahko ogledamo, kolikšna količina dokumentacije je na voljo v Emacsu. Vpišimo M-x info ali C-h i, kar požene sistem Info, brskalnik po dokumentaciji v Emacsu.


Naprej Nazaj Kazalo