Tento seriál bude venovaný populárnemu textovému editoru Emacs. V tejto úvodnej časti je nutné vysvetliť základné termíny, usporiadanie a ovládanie za účelom základnej úpravy textu.
,,Operačný systém, ktorému nechýba ani dobrý editor."
O Emacse sa žartovne hovorí, že je operačný systém a nie je to ďaleko od pravdy. Emacs je napísaný v dialekte jazyka Lisp, ktorý je špeciálne vybavený na vývoj textového editoru, ale poskytuje aj možnosť za behu rozšíriť editor o rôznu funkcionalitu (napr. IRC klient, e-mail klient, hry).
Základná terminológia
Módy
Emacs pracuje v takzvaných editačných módoch (režimoch). Mód v Emacse môže byť major (hlavný) a k tomu môže mať viacero minor (vedľajších) módov.
- Hlavný mód sa nastavuje zvyčajne podľa typu súboru a mení pravidlá pre zvýrazňovanie textu (syntax highlighting), funkcie kláves a klávesové skratky.
- Vedľajšie módy sú možné rozšírenia módu. Tie môžu byť nezávislé na hlavnom móde (napr. pridanie kontroly pravopisu) a tiež môžu meniť klávesové skratky.
Pomocou módu je možné zapnúť prostredie pre zdrojový kód mnohých programovacích jazykov (zvýrazňovanie a pomocné funkcie), používať shell (ansi-term, eshell), debugger, REPL interpretery jazykov (Perl, Ruby, ...), zobrazovať interaktívne chybové výstupy kompilátorov aké sa používajú v mnohých IDE alebo aj emuláciu editoru Vi (viper-mode).
Skratky
Emacs poskytuje mnoho funkcií a preto sa zvyknú používať ,,exotické" skratky - klávesové modifikátory a skratky pozostávajúce z postupnosti viacerých znakov. Jeho pôvod siaha ďaleko za hranice ,,vynájdenia" klávesnice IBM PC a preto aj modifikátory sa zvyknú nazývať inak.
Prefix C-
znamená klávesu (alebo aj iný znak) v kombinácii s modifikátorom Control.
M-
znamená modifikátor Meta, ktorého funkciu na klávesnici PC nahrádza stlačený Alt alebo Esc stlačený pred samotnou skratkou (C-M-s
je ekvivalentné Ctrl+Alt+s
alebo Esc Ctrl+s
).
V skratkách záleží aj na stlačenom Shifte (niekedy môže Shift figurovať v skratke ako S-
).
Klávesa Windows (winkey) slúži ako modifikátor Super (s-
).
Ďalší existujúci modifikátor je Hyper (H-
), ktorú ja osobne nemám nastavenú a ani nepoužívam, a spolu so Super nie sú bežne používané v skratkách.
Modifikátory (ale aj iné klávesy) si každý užívateľ môže konfigurovať pomocou xmodmap
konfiguračného súboru.
Buffer, Window, Frame
- Buffer je oblasť, ktorá zobrazuje nejakú informáciu (výstup programu, nejakej zabudovanej funkcie alebo jednoducho súbor). Buffer môže byť aj zamknutý pre zápis. Medzi buffermi je možné prepínať pomocou
C-x b
. Pokiaľ je nutné zadávať nejakú hodnotu, používa sa minibuffer, ktorý tiež môže pracovať v nejakom móde a tak umožní dopĺňanie tabulátorom, vkladanie zo schránky alebo aj bežné klávesy pre orientáciu v texte.
- Frame (rámec) je samostatné okno editoru. Jeden spustený Emacs môže zobrazovať viacero rámcov.
- Window (okno) zobrazuje buffer. Táto schéma oddelených vrstiev umožňuje rôzne kombinácie - môžeme mať viacero rámcov a každý môže mať viacero okien, pričom buffer nie je exkluzívne viazaný na žiadne okno (inými slovami, je možné nechať si zobraziť jeden súbor viackrát a v každom okne mať nastavenú inú pozíciu).
Základné ovládanie
Každá uvedená skratka vždy vykonáva nejakú funkciu (tzv. binding funkcií na skratky), ktorú je možné zadať aj menom (po stlačení M-x
alebo klávesy menu napravo od medzerníka, je možné dopĺňanie tabulátorom).
Odporúčam písať si často používané skratky a vytvoriť si tak dočasný ťahák. Niektoré funkcie nie sú tak často používané, vtedy je vhodnejšie zapísať si názov funkcie, ktorá sa ľahšie zapamätá. Pokiaľ poznáme skratku, môžeme si zobraziť nápovedu o nej pomocou C-h k
(interaktívna funkcia, ktorá čaká na stlačenie skratky a zobrazí informácie o priradenej funkcii). Emacs sám seba výborne dokumentuje, C-h ?
zobrazí nápovedu o nápovede (o ďalších možnostiach ako vyhľadávanie funkcie, popis funkcie, premennej a pod.). C-h l
zobrazí posledných 100 stlačených kláves, čo je vhodné, ak sa nám niečo podarilo a nevieme ako... C-h m
zobrazí informácie o aktuálnom móde.
Otvorenie a uloženie súboru
Na otvorenie existujúceho alebo nového súboru sa používa C-x C-f
(k tejto funkcii sa dá dostať aj cez grafické menu alebo textové menu M-`
), minibuffer pozná dopĺňanie tabulátorom a tiež znak ~ (alebo znak /) po predchádzajúcom lomítku ignorujú predchádzajúcu cestu a prejdú do domovského (alebo koreňového) adresára. Zrušiť zadávanie je možné stlačením C-g
alebo 3x Esc (táto kombinácia vždy funguje ako zrušenie akejkoľvek operácie). Súbor sa ukladá skratkou C-x C-s
.
Pohyb v texte
Pohyb v texte je celkom bežný, fungujú šípky, page up/down, home/end a tiež bežné kontrolné znaky terminálu sú nastavené na vykonanie ekvivalentných funkcií (napr. C-a
/C-e
pre kontrolný znak ekvivalentný Home/End).
Ukončenie
Nakoniec môžeme ukončiť Emacs skratkou C-x C-c
(save-buffers-kill-emacs).
To by bolo k tejto časti všetko a malo by to stačiť na úspešný začiatok. Nabudúce si povieme niečo viac ovládaní.
vim rulez
--Linus Torvalds
:)