Naprej Nazaj Kazalo

2. Uporaba Emacsa

2.1 Zagon in izhod iz Emacsa

Kot nov uporabnik bomo Emacs verjetno najprej hoteli pognati in preskusiti. A ko bomo enkrat v njem in ga bomo želeli zapustiti, tega najbrž 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 na poti do programov bodisi ni nameščen.

Ko pa smo uspešno pognali Emacs, se moramo naučiti, kako ga zapustiti. Vtipkati moramo ukaz C-x C-c. Pisava C-x pomeni, da pritisnemo tipko Ctrl, jo pridržimo, nato pritisnemo še tipko x, 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 zdeli Emacsovi ukazi sprva čudni, nenavadni in celo nerodni, še 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, na sredini 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 taka:

+----------------------------------------------------------------------+
|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 navadno zasede celotno okno ali zaslon. Zgornjo skico sem okrnil, da bi jo lahko prikazal na omejenem prostoru. Ko bomo prvič pognali Emacs, bomo opazili pozdravno sporočilo. Da bi prihranil prostor, sem njegovo vsebino izpustil 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 na menuju vedle kot običajni 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 bomo govorili.

Vrstica stanja in pogovorni vmesnik

Zgornja od zadnjih dveh vrstic Emacsovega vmesnika je letev stanja (ang. status bar). Na njej so podatki 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.

Najnižja vrstica se imenuje pogovorni vmesnik (ang. mini-buffer). Od osrednjega vmesnika (ang. main buffer) ga na zaslonu loči pravkar opisana letev stanja. Pogovorni vmesnik si lahko predstavljamo 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 letev stanja (ang. status bar), Emacsova dokumentacija pravi načinovna vrstica (ang. mode line). Tudi Emacs prikazuje podatke o načinu ali načinih dela v trenutnem vmesniku pa 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 najosnovnejšo terminologijo Emacsa. Treba jo je poznati, da bomo lahko brali o Emacsu in ga uporabljali.

Vmesniki in datoteke

Datoteka, ki jo odpremo v Emacsu, v primerjavi z nekaterimi drugimi urejevalniki 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. Tako delo ima prednosti in slabosti, a trenutno je pomembno le to, da razumemo ta pristop.

Posledica tega je, da isto besedo uporabljamo v Emacsovi dokumentaciji, načinih, paketih in tako naprej. Pomeni nam trenutno vsebino datoteke v pomnilniku. Eh, omeniti je treba, da vmesnik ni nujno povezan s katerokoli 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. Na splošno je točka utripalka (ang. cursor). Natančen razloček med točko in utripalko na začetku verjetno ni odločilen. Če vas muči radovednost, pa si predstavljajte razliko takole: utripalka je vidni prikaz točke. Utripalka je vselej vidna na določenem mestu trenutnega vmesnika. Točka pa, nasprotno, biva 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 tako kot številni sodobni urejevalniki omogoča urejanje vmesnika 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. Besedilo lahko označimo (ang. mark) s poudarjanjem (ang. highlight), tako da uporabimo miško, nato pa 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 priljubljeni grafični vmesniki in okenski upravljalniki.

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

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 okviri. Berite naprej!

Okviri

V Emacsu je okvir (ang. frame) ločeno okno X, ki prikazuje neki 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 Osnovno o tipkovnici

Ta razdelek opisuje osnove igranja na tipkovnico v Emacsu. Kot pri večini zmogljivih urejevalnikov nas tudi pri Emacsu od vsega, kar lahko v njem postorimo, loči 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 se začeli z njimi brez težav premikati po datoteki.

Emacs se v tem prav nič ne razlikuje. Tudi tu se moramo naučiti različnih pritiskov na tipke in ukazov. Kakor v vi se moramo naučiti le nekaj osnov, pa že lahko postorimo večino dela. Sčasoma se lahko priučimo tudi drugih ukazov in si razširimo znanje, tako da znamo vedno hitreje opraviti delo.

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 treba 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 (navadno) takoj uboga.

Tipke, ki jih Emacs uporablja najpogosteje, so v dokumentaciji navedene takole: C za tipko Control ali Ctrl in M za tipko Meta. Večina sodobnih osebnih računalnikov ima eno ali več tipk, ki so označene s Ctrl, le redki imajo tipko z oznako Meta. V mislih vselej nadomestimo tipko Meta z eno od tipk Esc ali Alt. Večinoma se tipki Esc in Alt vedeta 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 takega kot 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, krajše, 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. Po tej poti na primer zlahka poiščemo vse ukaze, ki so povezani z okviri (ang. frame). Preprosto vnesemo C-h a in vpišemo frame.

Premikanje po vmesniku

Zdaj ko vemo, 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         za vrstico navzgor 
C-n         za vrstico navzdol 
C-f         za znak naprej 
C-b         za znak nazaj 
C-a         začetek vrstice
C-e         konec vrstice
C-v         za celotno stran navzdol 
M-v         za celotno stran navzgor 
M-f         za besedo naprej 
M-b         za besedo nazaj 
M-<         začetek vmesnika
M->         konec vmesnika
C-g         ustavi trenutni ukaz
-----------------------------------

In natanko tako, kot bi si tudi želeli, smerne tipke (tiste s puščicami) navadno delujejo v skladu z našimi pričakovanji. Tipka vračalka (ang. backspace) pa morebiti ne. A to je druga zgodba. :-(

Najpomembnejši ukazi

Zdaj ko se znamo premikati po vmesniku, ali smo že pripravljeni tudi za odpiranje in shranjevanje datotek? Morebiti celo za iskanje? Da, tu 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 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 funkcija, ki shrani vsebino vmesnika na disk, se imenuje save-buffer. Privzeto je pripeta na akord C-x C-s. Če želimo shraniti vsebino vmesnika, pritisnemo akord ali pa vpišemo M-x save-buffer in dosežemo popolnoma enak učinek.

Vsem najpogosteje rabljenim funkcijam so vnaprej prirejeni akordi. 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 vgrajeno dobesedno na stotine funkcij, ki so vse dosegljive. Zgornji seznam je le izvleček ukazov, ki jih uporabljam najpogosteje. Če nas zanimajo podrobnejši opisi, kaj te funkcije počno, in želimo popolnejši seznam, pa si moramo ogledati neposredno pomoč.

Dopolnjevanje s tipko Tab

Podobno kot številne 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 Emacs. Č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 je cel kup imen, ki se 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 na dve okni. V enem je vmesnik, ki ga urejamo, v drugem 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

V Emacs je 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 po prvem berilu, č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 sami izobrazili, napisano pa je kot začetniški tečaj.

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

Za konec si oglejmo še, koliko 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