Hlavní navigace

Emacs: viac než len editor (5)

Stanislav Kuchár

- Nejde sieť, čo mám robiť? Nudím sa! - Čítaj si manuál. RTFM! - Ale keď ja tu nič nemám. - Máš predsa emacs, ten má dokumentáciu zahrnutú v sebe, tak sa ho uč!

Takto nejak vyzerala krátka debata, keď v počítačovej učebni „spadla“ sieť a informácií chtivý študent začal svojimi sentimentálnymi problémami otravovať staršieho a ostrieľanejšieho kolegu. Študent sa samozrejme nedal hneď tak odbiť.

– A čo sa mám učiť!? Veď už všetko viem! Viem napísať text, hľadať v ňom, mazať, ba aj spraviť makro. Tak čo sa mám ešte učiť?
 – Lenže emacs je viac než len editor, – hovorí emacs guru, – emacs ti môže zjednodušiť prácu podľa toho, o aký text ide. Ak je to program v jazyku Python či Lisp, ofarbí ti klúčové slová, poskytne ti klávesové skratky, aby si nemusel vypisovať celé sekvencie, …

Viac milému študentíkovi nebolo treba, nenechal skúsenejšieho kolegu ďalej ospevovať emacs. Spomenul si ako videl v jednom gigantickom editore na onom skoro funkčom OS, ako boli funkcie zafarbené na modro, poznámky na zeleno a premenné na červeno. Hneď ho to zaujalo.

– A ako si teda môžem ofarbiť program v C++?
 – Hľadaj v Helpe. Emacs ti sám povie, ako si ho môžeš uspôsobiť podľa svojich predstáv.

Necháme študentíka, nech sa trochu ponamáha hľadaním. My sa poďme pozrieť ako je to s tým prispôsobovaním emacs-u. (Neskôr zistíme, že aj to ofarbovanie je jeho súčasťou.)

Customize alebo Prispôsobovanie

Emacs po nainštalovaní má isté nastavenia: súbory sa ukladajú pomocou C-x C-s, tabulátor je dlhý 8 znakov, texty sa neofarbujú, ľavé tlačidlo premiestni kurzor, atď. A mnoho z týchto štandardných vlastností emacsu sa dá zmeniť.

V menu Help je položka Customize a pod ňou Top-Level Customization Groups. Keď ju zvolíme, vidíme celý zoznam oblastí, ktoré sa dajú prispôsobovať spolu so stručným popisom, čo sa v nich bude prispôsobovať. Každá oblasť obsahuje ďalšie položky a podoblasti – pekne hierarchicky usporiadané (obraz si môžete vytvoriť pomocou HelpCustomizeBrowse Customization Groups). Keby sme mali len v krátkosti popísať všetky položky nevystačilo by ani 10 dielov nášho seriálu. Okrem toho s každou ďalšou verziou emacsu ich pribúda.

Chudák študentík ešte stále hľadá, nepozná ešte natoľko emacsovský žargón. Poďme mu trochu pomôcť. Ofarbovanie textu je v skupine Faces group (vysvetlenej ako Support for multiple fonts.) Stlačíme Enter alebo klikneme myšou na [Go to Group]. Ďalej zvolíme Font Lock group (Font Lock mode text highlighting package.) Tu nastavíme Global Font Lock Mode na on pomocou [Toggle], aby odteraz boli všetky súbory známych formátov ofarbované. Ešte treba uložiť vykonané zmeny pomocou [Save for Future Sessions] na začiatku stránky. Všetky „Customize“ zmeny sa štandardne ukladajú do súboru .emacs v domácom adresári, aby emacs aj nabudúce vedel ako má upraviť svoje správanie podľa vašich predstáv.

Ak ste nespokojný ako študentík a nepáčia sa vám farby, ktoré sa páčili tvorcom emacsu, môžete si ich kľudne predefinovať v Font Lock Highlighting Faces; fantázii sa medze nekladú.

Domáca úloha znie: pohrabte sa trochu v Customize, je tam toho dosť na hranie. Možno to zaberie nejaký čas… Priznám sa, ja som to celé nikdy neprešiel. Takmer vždy keď sa pustím do bádania, čo šikovného zase pridali, tak sa zaručene nikdy nedostanem na koniec, lebo je toho toľko a vždy ma niečo natoľko zaujme, že sa tam stratím na niekoľko hodín. Je to ako bludisko. Ale vo chvíľach voľna, alebo keď sa nudíte…

Ak patríte k tým pár nešťastným, že máte starší emacs a Font Lock skupinky v Customize nemáte, skúste si prečítať popis k funkcii global-font-lock-mode a dopracujute sa k podobným výsledkom aj keď možno trochu tŕnistejšou cestou: C-h f global-font-lock-mode.

~/.emacs

Spomenuli sme súbor .emacs. V tomto súbore si užívatelia zapisujú, v čom chcú aby sa ten ich emacs líšil od toho štandardného. A to samozrejme v jazyku Lisp. Okrem vecí, ktoré ste si pomenili pomocou Customize sa tam najčastejšie nachádzajú klávesové skratky.

Zdá sa vám C-x C-s (ulož súbor) dosť dlhé? Čo tak napríklad f2? Jednoduché:

  1. Zistíme si akou funkciou sa ukladá súbor: C-h c C-x C-s. (C-h c popíše akýkoľvek kláves.) V spodnom riadku sa zobrazí: C-x C-s runs the command save-buffer.
  2. Klávesu f2 priradíme funkciu save-buffer tak, že do súboru .emacs (vo vašom domácom adresári) pridáme nasledovný riadok.
    (global-set-key (quote [f2]) 'save-buffer)

Ani ste sa nenazdali a už píšete lispovské príkazy. Takto si môžete nadefinovať akýkoľvek kláves. Prv než nejakému klávesu priradíte novú funkciu, zistite, či tomuto klávesu už nebola priradená iná užitočná funkcia: C-h c. Vypíše meno funkcie, ktorú tento kláves spúšťa. Čo tá funkcia robí? C-h f meno-funkcie.

Módy

Emacs má pre mnoho známych programovacích jazykov takzvané módy. Keď otvoríte napríklad súbor hello.c (alebo akýkoľvek iný súbor s príponou .c) v strede módového riadku sa objaví ©, teda oznam, že céčkovský mód je aktívny. Čo vám tento mód ponúka? Aké klávesy má definované? Aké finty obsahuje? Stačí si prečítať popis módu z menu: HelpDescribeDescribe Buffer Modes alebo C-h m. Tam nájdete popis všetkého, čo mód vie ako aj odkazy na ďalšie čítanie.

Tu je ďalšia domáca úloha. Otvorte si súbor v jazyku, ktorý najčastejšie používate (Perl, HTML, Java alebo LaTeX) a prečítajte si o ňom. Zistíte aké klávesy sú definované, ako si môžete modifikovať správanie tohto módu a iné fajnôstky.

Okrem programovacích módov spomeniem dva módy, ktoré sa na UN*Xe dosť zídu.

info

Info mód emacsu slúži na prezeranie info stránok. Z klávesnice ho vyvoláte C-h i, z menu HelpManuals →  Browse Manuals with Info.

Je taký užitočný, že ja som si do ~/.emacs pridal riadok:
  (global-set-key (quote [f1]) 'info)

man

Manuálové stránky, zobrazia staré známe man stránky, ale v okne emacsu. Možno v nich, okrem iného, vyhľadávať emacsovským iteračným spôsobom, prehliadať ich po stránkach alebo prechádzať medzi jednotlivými sekciami. Z menu HelpManualsRead Man Page... a potom zadáte príkaz, ktorého dokumentáciu chcete vidieť.

Osvedčilo sa mi priradiť si túto funkciu klávesu (aby som nemusel klikať po menu):
  (global-set-key (quote [C-f1]) 'man)

Tip: pred stlačením C-f1 alebo vyvolaním menu sa postavte na meno príkazu alebo funkciu priamo v zdrojovom kóde.

Našli jste v článku chybu?

24. 11. 2000 8:39

Thorn (neregistrovaný)

Mne uz davno chybal html mod v emacse, tak som si nieco stvoril. Nie je to absolutne dokonale, ale funguje to (uz to pouzivam cez 3 roky).
Vie to HTML, PHP i CSS (aj so zvyraznovanim syntaxe). Xel by som este dorobit XHTML. Co mi chyba asi najviac je, ako zistit rozmery obrazku (<img height="" width="">. Keby niekto vedel ako to zistit z emacs lispu, bol by som povdacny.
http://slonik.sk/computers/files/html-mode.el.gz



23. 11. 2000 17:23

Karel SOMMER (neregistrovaný)

tak jsem si rikal, ze to taky zkusim, ale nechodi mi syntax highlighting PHP, nemel by nekdo nejakou radu? (pouzivam xemacs 21 co je v mandrake 7.2)

dik



DigiZone.cz: Je tu první sportovní přenos přes mobily

Je tu první sportovní přenos přes mobily

120na80.cz: 5 nejčastějších mýtů o kondomech

5 nejčastějších mýtů o kondomech

Lupa.cz: Kdo pochopí vtip, může jít do ČT vyvíjet weby

Kdo pochopí vtip, může jít do ČT vyvíjet weby

Podnikatel.cz: K EET. Štamgast už peníze na stole nenechá

K EET. Štamgast už peníze na stole nenechá

Podnikatel.cz: V restauraci bez cigaret? Sněmovna kývla

V restauraci bez cigaret? Sněmovna kývla

120na80.cz: Pánové, pečujte o svoje přirození a prostatu

Pánové, pečujte o svoje přirození a prostatu

Podnikatel.cz: Chaos u EET pokračuje. Jsou tu další návrhy

Chaos u EET pokračuje. Jsou tu další návrhy

DigiZone.cz: Rádio Šlágr má licenci pro digi vysílání

Rádio Šlágr má licenci pro digi vysílání

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte

Podnikatel.cz: Podnikatelům dorazí varování od BSA

Podnikatelům dorazí varování od BSA

Vitalia.cz: Spor o mortadelu: podle Lidlu falšovaná nebyla

Spor o mortadelu: podle Lidlu falšovaná nebyla

Vitalia.cz: Taky věříte na pravidlo 5 sekund?

Taky věříte na pravidlo 5 sekund?

Lupa.cz: Proč firmy málo chrání data? Chovají se logicky

Proč firmy málo chrání data? Chovají se logicky

120na80.cz: Jmelí je více léčivé než jedovaté

Jmelí je více léčivé než jedovaté

Měšec.cz: mBank cenzuruje, zrušila mFórum

mBank cenzuruje, zrušila mFórum

Podnikatel.cz: Udávání kvůli EET začalo

Udávání kvůli EET začalo

Vitalia.cz: Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Vitalia.cz: Jsou čajové sáčky toxické?

Jsou čajové sáčky toxické?

Měšec.cz: Jak levně odeslat balík přímo z domu?

Jak levně odeslat balík přímo z domu?

120na80.cz: Na ucho teplý, nebo studený obklad?

Na ucho teplý, nebo studený obklad?