- p°edchozφ Φlßnek - nßsledujφcφ Φlßnek - obsah - ·vodnφ strßnka -

LinuxovΘ noviny 08-09/98

ZaΦφnßme s Emacsem: I - Spu╣t∞nφ a ukonΦenφ

Michal FadljeviΦ, 11. zß°φ 1998

Vφtßm vßs u prvnφho dφlu serißlu o Emacsu. Cht∞l bych v n∞m p°φstupnou formou nauΦit Φlov∞ka, kter² nemß (zatφm) v Unixu sv∙j oblφben² editor, jak s Emacsem ╛φt a p°e╛φt. Nepova╛uji se za n∞jakΘho emacsovΘho guru a doufßm, ╛e prßv∞ proto by mohl b²t serißl srozumiteln².

ProΦ jsem vybral Emacs

Kdy╛ jsem p°ed lety zaΦal pracovat v Unixu, zaΦal jsem hledat editor, kter² by spl≥oval moje po╛adavky:

  • velmi mocn² (a konfigurovateln²)
  • b∞╛φcφ v╣ude (Unix, DOS, Win*)

Emacs oba tyto po╛adavky spl≥uje, tak╛e jsem spokojen² Φlov∞k :-).

Co se v Emacsu dß d∞lat

Je dobrΘ °φci si hned na zaΦßtku to, co v╛dycky s humorem °φkajφ Emacsovφ guru, a sice, ╛e:

V Emacsu je mo╛nΘ v╣echno.

SkuteΦn∞, v Emacsu m∙╛ete s velk²m komfortem psßt knihy v TeXu, vyvφjet a ladit programy v C/C++/Jav∞ a spoust∞ jin²ch jazyk∙ (Emacs si t°eba pod sebou spustφ gdb nebo dbx a vy na jedno stisknutφ klßvesy provßdφte "Next", "Step", "Finish" a Emacs vßm zobrazuje p∞kn∞ graficky

[ Emacs a gdb ]

a sßm p°epφnß zdrojovΘ soubory tak, jak krokujete - prost∞ rßj programßtora), dßl m∙╛ete Φφst po╣tu a newsovΘ skupiny (dal╣φ obrßzek), editovat binßrnφ soubory, poΦφtat si da≥ovΘ p°iznßnφ, vΘst jednoduchΘ ·Φetnictvφ, prochßzet se po anonymnφch FTP serverech stejn∞ pohodln∞ jako po lokßlnφch discφch (velmi podobn∞ jako v oblφbenΘm mc) a v podstat∞ cokoliv, na co se╛enete p°φslu╣n² balφk maker nebo na co si makra napφ╣ete sami. Ke v╣em v²╣e zmφn∞n²m v∞cem se dostaneme v pr∙b∞hu Φasu, jen co budeme mφt za sebou ·plnΘ zaΦßtky. Za sebe je╣t∞ na ·pln² konec ·vodu dodßvßm: "Bu∩te na sv∙j editor nßroΦnφ", Φili v╣echno co d∞lßte opakovan∞ si zautomatizujte. V Emascu to skuteΦn∞ jde.

[ Emacs a news ]

[ Emacs a po╣ta ]

Instalace

Proto╛e instalace Emacsu pro danou distribuci je trochu nad rßmec tohoto povφdßnφ, budu p°edpoklßdat, ╛e pou╛φvßte Red Hat 4.2 a mßte nainstalovßny p°φslu╣nΘ RPM balφky s Emacsem jako jß. Jsou to tyto balφky:

$ rpm -qa|grep emacs
emacs-19.34-4
emacs-el-19.34-4
a jeden z balφk∙
emacs-nox-19.34-4
emacs-X11-19.34-4

Pokud mßte jinou distribuci, budete si muset p°φslu╣nΘ instalaΦnφ balφky n∞kde iniciativn∞ sehnat, p°φpadn∞ popßtrejte po standardnφch GNU FTP mirrorech a tam se dß Emacs najφt i ve zdrojov²ch souborech. Pou╛φvß autoconf, tak╛e na v∞t╣in∞ rozumn²ch systΘm∙ vystaΦφte s obvykl²m:

 $ tar xfvz ema*tar.gz; cd ema*
 $ ./configure
 $ make 
 ... Φas na Φaj - n∞kdy i na dva {:)
 $ make install

[ Emacs a news podruhΘ ]

Podle m²ch instrukcφ jste zvφdavφ a hned p°edchozφ zmφnka o t°ech balφcφch vßs jist∞ zaskoΦila. Tak╛e malΘ vysv∞tlenφ

  • emacs-19.34-4 - zde je vlastnφ distribuce Emacsu
  • emacs-el-19.34-4 - zde jsou r∙znΘ dal╣φ balφky ve zdrojovΘ form∞ pro zvφdavΘ nebo pro ty, kdo si cht∞jφ t°eba opravit n∞jakou chybu
  • emacs-X11-19.34-4 - /usr/bin/emacs
  • emacs-nox-19.34-4 - /usr/bin/emacs-nox

Pokud chcete spou╣t∞t Emacs pouze v Φist∞ znakovΘm re╛imu, staΦφ vßm balφk emacs-nox a obdobn∞ jste-li zaryt² "X Window-sßk", nainstalujete si z°ejm∞ emacs-X11. Rozhodn∞ vßm staΦφ jen jeden z nich.

/usr/bin/emacs ... 1908308 B
/usr/bin/emacs-nox ... 1473692 B

Rozdφl je mezi nimi (krom∞ velikosti) ten, ╛e verze zkompilovanß pro X Window System pou╛φvß p°φmo menu v hornφ Φßsti obrazovky, posuvnou li╣tu po pravΘ stran∞ a p°i b∞hu n∞kterΘ dialogy vyskakujφ jako novß dialogovß okna, zatφmco verze -nox tyto vymo╛enosti nemß. Jinak funkcionalita z∙stßvß stejnß. To je vlastn∞ jedna z hlavnφch my╣lenek tohoto hlavnφho proudu tzv. GNU Emacsu a sice, ╛e p°enositelnost by m∞la z∙stat maximßlnφ. Jen pro vysv∞tlenφ, b∞hem let vznikaly r∙znΘ nßzorovΘ proudy a skupiny v²vojß°∙ Emacsu se svobodn∞ ╣t∞pily a ╣t∞pily, tak╛e dodnes m∙╛ete najφt (a p°φpadn∞ pou╛φvat) XEmacs, Lucid Emacs atd., a je jich je╣t∞ vφce. Jak asi sprßvn∞ tu╣φte, XEmacs se chce vφce integrovat do X Window SystΘmu a z°ejm∞ mu nevadφ, ╛e pak u╛ nep∙jde spustit na ubohΘ konzoli nebo p°es terminßlov² emulßtor po modemu. My se budeme v∞novat pouze GNU Emacsu, tzn. tomu Emacsu, kter² skuteΦn∞ b∞╛φ v╣ude (°ßdkov² re╛im, X Window System, MS-Windows, DOS) a tφm, ╛e jste ho pustili t°eba na konzoli, neztrßcφte ╛ßdnou z jeho ·╛asn²ch schopnostφ.

Pokud vßm velikost nevadφ, nainstalujte si emacs-X11. Pokud ho spustφte v X Window System nap°. z xtermu, naskoΦφ vßm normßln∞ novΘ okno s Emacsem a ve znakovΘm re╛imu ho udr╛φte tak, ╛e ho spustφte:

$ emacs -nw

Jako: spus╗ Emacs bez okna (-nw "NoWindow"). Pak nevyskoΦφ novΘ okno, ale p∞kn∞ se rozb∞hne spo°ßdan∞ v okn∞, kde jste napsali tenhle °ßdek.

Spu╣t∞nφ

Emacs se dß pou╛φt b∞╛n²m zp∙sobem jako vi, joe, vim, elvis, pico apod. Postupem Φasu d∞lß Φlov∞k stßle vφce v∞cφ p°φmo v Emacsu, tak╛e sprßvn² Emacs-lover spou╣tφ Emacs jen rßno a vypφnß ho a╛ veΦer.

$ emacs mujprvni.txt

resp. na konzoli

$ emacs -nw mujprvni.txt

[ Emacs v X Windows ]

Ocitli jste se ve sv∞t∞ Emacsu. V╣echno zde mß svß pravidla a p°iznßvßm otev°en∞, ╛e to chce urΦitΘ ·silφ a Φas zvyknout si. (PS: Prvnφ dva m∞sφce jsou nejhor╣φ, pak je to zase naopak ·╛asnΘ). Na obrßzku vidφte (v po°adφ shora dol∙) menu, velkou Φßst obrazovky (pracovnφ oblast) slou╛φcφ pro vlastnφ prßci, vpravo posuvnou li╣tu (vyzkou╣ejte si pravΘ, levΘ a prost°ednφ tlaΦφtko), v dolnφ Φßsti pak velmi u╛iteΦn² (a samoz°ejm∞ konfigurovateln²) stavov² °ßdek (mode-line) a ·pln∞ poslednφ °ßdek je snad nejd∙le╛it∞j╣φ Φßst a sice komunikaΦnφ oblast (minibuffer), kde se odehrßvß velkß Φßst Va╣φ komunikace s Emacsem. Emacs vßm tam zobrazuje r∙znΘ varovßnφ, chyby, rady a zßrove≥ tam odpovφdßte jednoduchΘ otßzky apod. Kdy╛ u╛ jsme u t∞ch otßzek. V╣imn∞te si, ╛e u "mΘn∞ d∙le╛it²ch" otßzek vystaΦφ s odpov∞dφ y/n, ale u "destruktivn∞j╣φch" vy╛aduje p∞kn∞ vypsat yes/no - to proto, aby vßs donutil uv∞domit si, jestli opravdu chcete danou v∞c ud∞lat. ⌐ikovnΘ, nemyslφte? Dφvejte se tam Φasto. Emacs vßm tam Φasto radφ, co m∙╛ete d∞lat a jak se doΦφst nßpov∞du.

Obrßzek ukazuje, jak vypadß Emacs p°i prßci ve znakovΘm re╛imu. P°ichßzφte pouze o menu v hornφ Φßsti. To je up°φmn∞ pro zaΦßteΦnφky docela praktickß v∞c, proto╛e u polo╛ek jsou p∞kn∞ p°ehledn∞ p°ipsßny klßvesovΘ sekvence, kterΘ akci vyvolajφ. B∞hem n∞kolika m∞sφc∙ si tak Φlov∞k ty nejΦast∞j╣φ nenßsiln∞ zapamatuje. Tak╛e pokud mßte mo╛nost a slu╣n² v²poΦetnφ v²kon, pou╣t∞jte si (ze zaΦßtku) rad∞ji X-ovou verzi.

[ Emacs na kozoli ]

Platφ to, ╛e Emacs s vßmi neustßle komunikuje, t.j. m∞li byste vid∞t nebo sly╣et odezvu na to co d∞lßte. Pokud se tak ned∞je, je to divnΘ. V takov²ch situacφch maΦkejte nejprve jednou a n∞kdy i vφcekrßt po sob∞ C-g, co╛ je ve v╣ech situacφch stornujφcφ kombinace klßves, kterß p°eru╣φ a skonΦφ to, co jste prßv∞ d∞lali (a z°ejm∞ se vßm to z n∞jakΘho d∙vodu neda°φ).

Te∩ trochu typografickΘ konvence. V Emacsu je hodn∞ povel∙ a Φasto se pou╛φvajφ klßvesovΘ sekvence a to n∞kdy s p°epφnaΦi a n∞kdy bez p°epφnaΦ∙. Tak╛e

zßpisznamenß
C-gp°idr╛ p°epφnaΦ Ctrl - Control a zmßΦkni jednou pφsmeno g
C-g C-gp°idr╛ p°epφnaΦ Ctrl a zmßΦkni dvakrßt pφsmeno g
C-g gp°idr╛ Ctrl a zmßΦkni jednou pφsmeno g potom pus╗ Ctrl a zmßΦkni je╣t∞ jednou pφsmeno g
M-vzmßΦkni p°epφnaΦ Meta - u nßs v∞t╣inou Alt - a jednou pφsmeno v
Pokud toto nefunguje, pou╛φvß se mφsto M-v nßhrada ESC v, Φili zmßΦkni ESC a potom pφsmeno v
C-M-vp°idr╛ souΦasn∞ Ctrl a Meta a jednou pφsmeno v. Zde se nebojte - pokud vßm z n∞jakΘho d∙vodu nefunguje Meta, ekvivalent je skuteΦn∞ Esc C-v
C-x r lNejprve C-x, uvolnit v╣echno a postupn∞ klßvesy r a l
C-x sNejprve p°idr╛ Ctrl a pφsmeno x, pak uvolni Ctrl a zmßΦkni s
C-x C-sNejprve p°idr╛ Ctrl a pφsmeno x, a pak zmßΦkni s

Zde si v╣imn∞te d∙le╛itΘho rozdφlu - v poslednφm p°φpad∞ po°ßd dr╛φte Ctrl stisknut², zatφmco v p°edposlednφm ho po pφsmenu x uvolnφte. Na to si brzy zvyknete, jen je pot°eba si dßt ze zaΦßtku trochu pozor. Tak a te∩ u╛ jsme definovali konvenci zßpisu, tak╛e te∩ u╛ vφte, co znamenß, kdy╛ vßm prozradφm nejnejd∙le╛it∞j╣φ v∞c a sice - jak skonΦit s Emacsem - je to pomocφ sekvence C-x C-c.

Ne╛ se dostaneme k tomu, co kterß sekvence d∞lß, malΘ vysv∞tlenφ toho, proΦ toto asi vzniklo. Celkem jednoduchou ·vahou dostßvßme:

Mß-li program psßt text, musφ v∞t╣ina klßves po stisku vlo╛it do textu p°φslu╣n² znak. To ano, ale musφme se n∞jak textem pohybovat, opravovat ho a podobn∞. Dobrß, m∙╛eme pou╛φt p°epφnaΦ + klßvesa nap°. C-a, C-b, a╛ C-z nebo M-a, M-b a╛ M-z. Jak Φasem uvidφte, p°φkaz∙ umφ Emacs na stovky, tak╛e ani to by nestaΦilo, proto se pou╛φvß i C-M-a a╛ C-M-z a navφc r∙zn∞ dlouhΘ sekvence po prefixech C-x a C-c. A v╣echny tyto sekvence jsou vßmi modifikovatelnΘ. ╚ili ad absurdum po spu╣t∞nφ Emacsu jenom Vy m∙╛ete v∞d∞t, co jste si posledn∞ p°i°adil za akci t°eba s sekvenci C-c v v d r. No, to u╛ je opravdu trochu zvrhlΘ...

klßvesaneboakce
$\rightarrow$C-fznak vp°ed
$\leftarrow$C-bznak vzad
$\uparrow$C-p°ßdek nahoru
$\downarrow$C-n°ßdek dol∙
DelC-dsma╛ znak pod kurzorem
BackSpacesma╛ znak vlevo
C-ksma╛ °ßdek
HomeC-ajdi na zaΦßtek °ßdku
EndC-ejdi na konec °ßdku
PgUpM-vstrßnka nahoru
PgDnC-vstrßnka dol∙
C-x C-sulo╛ tento soubor
C-x C-cukonΦi Emacs

╪ekn∞me si typickou konfiguraci. Po instalaci mßte (pom∞rn∞) rozumnΘ vazby nadefinovßny a m∞nit budete jen to, co vßm bude opakovan∞ vadit a hlavnφ, co budete d∞lat je, ╛e si budete p°idßvat svoje novΘ vazby (bindings). Budu se sna╛it psßt do zßvorek anglickΘ ekvivalenty proto, abyste m∞li lep╣φ vazbu na to, o Φem se pφ╣e v dokumentaci. (Do nφ budete muset d°φve Φi pozd∞ji stejn∞ vklouznout, proto╛e tento serißl vßm nem∙╛e objasnit v╣e. Jen pro zajφmavost, ·plnß referenΦnφ p°φruΦka Emacsu mß n∞co kolem 600 stran - takovß bible Emacsu).

Tak╛e je╣t∞ jednou, pokud °eknu, ╛e C-x C-s ulo╛φ soubor, kter² prßv∞ editujte, znamenß to p°esn∞ to, ╛e ve standardnφ distribuci Emacsu po prvnφm rozb∞hnutφ je na sekvenci C-x C-s p°ivßzßna funkce "ulo╛ soubor". Pokud jste n∞co m∞nili, je to na vßs. ╚ili opatrn∞ na zm∞ny, kterΘ d∞lßte v konfiguraci Emacsu. Z 90% se pak Φlov∞k rozΦiluje neprßvem na Emacs, spφ╣e by m∞l spφlat sßm sob∞. (Mluvφm z vlastnφ zku╣enosti.) V╣echny takovΘto ·pravy si Φlov∞k typicky p°idßvß do svΘho souboru /.emacs, tak╛e pokud byste si ho n∞jak pokazili, jednoduchß pomoc - sma╛te ho a Emacs se rozb∞hne v defaultnφ konfiguraci, jak byl sestaven.

Proto╛e Emacs je urΦen po prßci v mnoha r∙zn²ch podmφnkßch, nenφ zvykl² se na cokoliv vßzat. V podstat∞ jakßkoliv klßvesnice bude dobrß. I kdy╛ t°eba nebude mφt F1 a╛ F12 nebo klßvesu Alt a podobn∞. To neznamenß, ╛e nemßte pou╛φvat klßvesy End, Home, PgUp, PgDn, F1 a╛ F12, Ins a Del. V∞t╣ina z nich funguje, jak je obvyklΘ, a t∞m ostatnφm to vysv∞tlφme v n∞kterΘm z p°φ╣tφch dφl∙. Je dokonce velmi pravd∞podobnΘ, ╛e vßm te∩ hned t°eba nap°. Del nebude d∞lat to, co mß - to je nejΦast∞j╣φ problΘm, ale na v╣echno se podφvßme a v tabulce vidφte, ╛e Del mß ekvivalent C-d, tak╛e se tak moc ned∞je...

Nynφ si zkuste napsat n∞jak² odstavec textu a vyzkou╣ejte si editovßnφ.

Nenφ to tak hroznΘ, co? Zkuste si jako samostatnΘ cviΦenφ "oeditovat" n∞kolik soubor∙. - To by bylo pro dne╣ek v╣e. PokraΦovßnφ p°φ╣t∞. Pokud vßm bylo n∞co nejasnΘ nebo mßte nßpad, co byste se cht∞li doΦφst o Emacsu p°φ╣t∞, napi╣te mi. *


- p°edchozφ Φlßnek - nßsledujφcφ Φlßnek - obsah - ·vodnφ strßnka -