Emacs


Obsah:


Uvod

Tak protoze se do toho nikdo nemam rozhodl jsem se napsat takovou uvodni skolicku k emacs. Emacs je relativne zajimava vec protoze to neni textovy editor, jak si hodne lidi mysli ale je to vlastne softwarova emulace lispove masini tak jak ji vyrabel treba xerox nebo IBM. Jak jsem uz psal ve skolicce o hurdovi dnesni unixovy osy maj celkem velkej problem protoze vlastni jadro je jakasi cerna skrinka a nejde jednoduse rozsirovat je proste cast sluzeb, kterou dela os-treba filesystem a ty uz nejdou nijak rozsirit. Jedno z reseni jak tento problem odstranit byly lispove masiny-vlastni os je proste interpretr lispu(vetsinou hardwarovej) a vsechno ostatni jsou rozsiritelne navrzene knihovny. Tento system se osvetcil ale mel nekolik nedostatku: Vlastne nesla nijak zajistit ochrana systemu-lisp pro to nema moc prostredku, proste kdyz jste rozsirili nejakou systemovou sluzbu spatne zaclo to cely blbnout. Nesly tu vubec delat veci jako multiuser nebo vetsi multitasking nebo nejak jednoduse portit aplikace psane v jinych jazycich pro jine osy. Proto se od nich v sirsim nasazeni upustilo.

Je ale fura situaci, kdy tyhle veci nevadi-na jednouzivatelskou editaci, mailovani, a fura dalsich cinnosti proste multiuser a ochranu vubec nepotrebujete. Protoze programy v lispu jsou stabilni celkove selhani systemu taky moc nehrozilo. A proto se rozhodli udelat emacs. Je to vlastne samostatny prenositelny os,ktery bezi jako task normalnich unixu a tak ho lidi muzou vyuzivat jen k tomu k cemu chteji. Vlastne slouzi jako doplnek k unixu. To co jde v unixu delat jen tezko-fullscreen aplikace, ruzne editory databaze apod. Programy co komunikuji z jinymi procesy atd. jde v emacs snadno a naopak-proste delat kompiler jako program pro emacs by bylo zbytecne a neefektivni. Programuje se v elispu coz je lisp z rozsirenim prave pro tyhle aplikace-ma pekne reseny obrazovkovy input/output apod. Dalsi vyhoda toho vsecho je ze muzete emacs hoodne prispusobit-predelate promene-switche a treba i nejaky ty kousky kodu pripsete proste muzete uplne vsechno. Je fura rozsireni co ruzni autori dodavaji k emacs-pro prolog,clisp atd..Proste tak jak muzete stelovat emacs nemuzete stelovat zadny jiny prostredi.

Aplikace pro emacs-tedy co emacs umi:

Textovy editor. nadstavby:
C editor
v xemacs barvicky,v normalnim doskakovani na zavorky a srovnavani zdrojaku
English text editor
automaticke rovnani do odstavcu,spelling check
Elisp editor
moznost volani interniho interpretru,barvicky,doskakovani, indentovani
Dalsi jazyky
TeX,nroff,fortran
Hexadecimalni mod...
Editor asciartu
a dalsi..
Specialni mody editoru
Vi emulace-emulace tohoto pekneho a stareho programatorskeho editoru Wordstar emulace-co rict
Interfacy do unixovych programu:
Debugger interface
davani breakpointu,krokovani apod..
Compiler interface
spracovani error vystupu
atd...
Specialni programy jako databaze,mailer,file manager a dalsi..

Popsat tohle vsechno neni mozne..ovladani emacs je ale logicke a sikovne tak popisu naproste zaklady.

Obrazovka

Emacs muze bezet v textu nebo xwoknech. Cele obrazovce se rika frame. V ni muze byt nekolik oken-na zacatku jsou dve-jedno pres celou obrazovku-to je aplikace editor vetsinou v lisp modu. A dole je jedno maly pres jednu radku. To je minibuffer-jakasi systemova konzole-sem jde stdout programu,tady se zadavaji prikazy atd..

Kazde okno ma prirazeny jeden buffer-coz je neco jako unixackej terminal nebo xwokeni drawable proste to kam aplikace davaji svuj vystup. Jaky buffer zrovna vidite je napsano uplne dole:

-----Emacs:neco
Ja tam napsano v jakych je modech,jaky buffer ty data zpravuje.

point

Kazde okno ma svuj point-to je misto kam ukazuje cursor. Cursor je tady neco jako mys v xwoknech-aplikace se muze dotazovat na jeho pozici,muze ho posouvat atd..Je tu stadartni aplikace co ridi pohyby kurozru-takze muzete jezdit spikama,po slovech,ukazovat mysi a tak ale muzete samozdrejme tu aplikaci zmenit.

Echo area

To je misto uplne dole na obrazovce. Je to vlastne zobrazeny klavesnicovy buffer. jsou tam vsechny klavesy jeste nezpracovane-proste kdyz kombinace je C-X C-C(exit) tak kdyz udelate C-X je to dole a teprve kdyz dopise C-C tak to zmizi. Taky tam jde standartni vystup z aplikaci prez write-tedy chyby,jednoradkovy hlasky atd..to se prave zobrazuje z minibuferu, ktery je v echo area take.

Mode line

To je ta dolni radka. Na ni jsou informace:
--ch-Emacs: buf       (major minor)----pos-----
Takze:ch jsou ** kdyz buffer byl zmenen-je treba savnout. buf je jmeno bufferu-vetsinou stejne jako jmeno editovaneho souboru major je hlavni mod-tedy jaka aplikace spravuje:c-mode pro c editor apod...

minor je jaka aplikace dela input-output jsou tu minnor mody jako lamat/nelamat radky apod..Techto modu muze byt vice-jsou to vlastne aplikace co zpravuji hlavni klavesy-fill pro zarovnavani,ovwrt pro prepis, Narrov atd..Klavesy co tyhle mody nesezerou jdou teprve major modu a ten ridi veci jako srovnavani syntaxe cecka,volani kompileru a tak. pos je pozice pointeru tedy cursoru

Jak pracujou klavesy

Emacs ma nekolik sad znaku-normalni znake jako A,B proste ascii
Meta-klavesy z alt:M-a je Alt+a
CTRL-z kontrolem:C-a je CTRL+a
M-C-a je Alt+Ctrl+a
Tyto klavesy se nepisou standartne do bufferu a vyvalavaji ruzne akce (jako v kazdem editoru) Taky se daji mackat pomoci esc a je M-a

Klavesnicove prikazy jsou rozdeleny do tri skupin:

jednoklavesove:C-f,up,down

dvouklavesove-pomoci prefix klaves-nejcastejsi je C-X. Potom ceka jeste na jednu klavesu-treba C-X C-C je exit. Je tu dulezity prefix C-h a potom klavesa-to vypise vsechny prikazy zacinajici od ty klavesy-moc se to hodi. Dalsi dulezita takova klavesa je C-u ta umozni rict kolikrat se vyvola dalsi klavesa-C-u10 popleze deset radek nahoru atd..jde to taky pres M-5 popleze 5 krat nahoru

a prikazy-M-X vas dostane na prikazovou radku kde muzete zadavat veci jako c-mode nebo compile. Na teto radce muzete udelat uplne cokoliv a casto pouzivane veci si pak muzete namapovat na jednoklavesove nebo dvouklavesove prikazy. Emacs jih uz hodne namapovanych ma..

Samozdrejme ze kazdy prikaz je vlastne jmeno lispove fce,kterou chcete volat. takze treba left je namapovano na funkci forward, ktera veme pozici pointeru a posune ji. Tak muzete delat fura srandovnich klaves,co vam skacou na zacatek ceckarske funkce apod.

Mapovani mezi klavesama je binding a je ulozeno v tabulkach,kterym se rika keymap.

Start emacs

emacs se startuje prikazem emacs. Pro jejim startu se ocitnete v editoru z bufferem *scratch* to je neco jako noname. To vsechno muzete zmenit ve fajliku ~/.emacs coz je lispovsky programecek(nedeste se..vetsinou potrebujete jenom nastavovat promeny..nic vic) kterej start zaruci.

Ukonceni emacs

jde to vlastne dvema cestama:
C-z coz je suspend-v X woknech to zikonifikuje v shellu to stopne.
C-X C-C normalni exit-ulozi buffery a zkonci

Zaklady editace

Minibuffer

To jak jsme uz psali-to dole kam se pisou prikazy.. fungujou tu kompletovaci klavesy-tabulator jako v bashovi,mezera-neco podobnyho. funguje i enter u nedopsanych prikazu

Minibuffer taky muze davat prompty od ruznych prikazu-treba find file vam tam hodi:

Find-file: /u2/emacs/src
kdyz chcete jinej adresar nemusite to mazat..proste hodite /u2/emacs/src//etc/termcap a jste tam.

Ma i svoji historii:

Regiony

Jsou vlastne normalni bloky v ostatnich editorech. takze kdyz treba ccete dat text uppercase date:
vlezete na zacatek a C-SPC
vlexete na konec a C-x C-u a je to...(C-x C-u je upcase-region-hazi uppercase)

Region normalne neni videt..protoze skoro kazdej prikaz dela region- insert hodi do regionu vlozenej text a tak..Aby byly videt musite spustit transident-mark-mode. Z regionama toho jse hodne provadet..jako sejvovat,zarovnavat a tak.. To by se sem asi neveslo..koukam ze skolicka dost roste..cekal jsem neco malyho.

Ostatni klavesy

no uz nemam silu psat o dalsich sluzbach editoru,jako jsou registry, kopirovani textu,vyhledavani..myslim ze seznam klaves najdete ve skoro kazdem helpu

Tak jen rychle postrehy:

Filemanager

Vic bufferu

To je treba kdyz chcete mit vic aplikaci-treba vic otevrenych fajlu a nechcete aby vam plasily na obrazovce-v podstate kazdy otevreni fajlu,nebo help takovy novy buffer vytvori. Muzete se mezi nima prepinat pomoci:

Okeni klavesy

No vic uz asi nema smysl psat..pokud vas emacs zaujala doporucuju si prohlidnout programatorsky mody-breakpointy,kompilace,rizeni verzi,generovani changelogu a tak..je to moc sikovny. Emacs je proste bezkonkurencne nejchytrejsi programatorsky prostredi. Pokud bude zajem jeste neco napisu.


Tento soubor je soucasti rozsahle sbirky skolicek na http://www.ucw.cz/~hubicka/skolicky

Take si muzete prohlidnout jeji puvodni textovou podobu

Nebo mi mailnout na hubicka@ucw.cz

Copyright (C) Jan Hubicka 1995