- předchozí článek - následující článek - obsah - úvodní stránka - - předchozí část - následující část - první část -

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-bM-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-aC-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 F1F12 nebo klávesu Alt a podobně. To neznamená, že nemáte používat klávesy End, Home, PgUp, PgDn, F1F12, 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í část - následující část - první část - - předchozí článek - následující článek - obsah - úvodní stránka -