Hlavní navigace

Emacs: viac než len editor (5)

23. 11. 2000
Doba čtení: 5 minut

Sdílet

- 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ť.

CS24_early

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.

Byl pro vás článek přínosný?