From bbs@floyd.upol.czMon Jan 29 16:34:57 1996 Date: Mon, 29 Jan 1996 16:28:23 +0100 From: BBS Floyd To: hubicka@limax.paru.cas.cz Subject: Skolicka #16-emacs (fwd) *** Forwarded file follows *** Posted By: kotelnik (kotelnik) on 'Linux' Title: Skolicka #16-emacs Date: Fri Jan 19 10:36:46 1996 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 A ted naproste zaklady standardni keymapy: Zaklady editace: ================ vkladani textu: C-g vam umozni vlozit specialni znaky-jako control kombinace apod.. C-q z trema osmickovyma cislama vklada asci kod Pohyb cursoru: c-a zacatek fajlu c-e konec c-f,vlevo znak dopredu -nepreskakujte to...celkem tyhle kombinace maj vyznam neveril jsem tomu ale kdyz pisete vsema deseti moc se to hodi, protoze nemusite sahat po sipkach..na uceni se vsema deseti doporucuju mavis-beacon pro wokna..moc peknej c-b,vpravo dozadu M-f slovo dopredu M-b slovo dozadu C-n dolu C-p nahoru M-r na levej kraj-nehejba z textem na obrazovce M-< zacatek bufferu M-> konec M-x goto-char precte cislo a skoci na znak cislo n ve fajlu M-x goto-line to samy pro radky Mazani textu: Del jako backspace C-d jako delete C-k smaze do konce radky M-d smaze dalsi slovo M-DEL smaze slovo dozadu Undo: C-x u , nebo C-_ Help:!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! tohle je moc dulezity. V helpu najdete vsechno potrebne..bez helpu to v emacs nejde. Ma taky pekny prohlizec info fajlu.. C-h k help o klavese-to je v emacs naadherne reseno-koukne se do binding tabulky a zjisti jmeno funkce a kazda funkce ma v definici help-uz jsem to popisoval ve skolicce o lispu C-h C-h napise vsechny moznosti helpu-help o helpu dalsich klaves je moc ale C-h m je vyvolani helpu o modu-specialnich funkci jako kompilace a tak File: C-x C-f RET Otevre falj nebo vytvori C-x C-s ulozi Prazdny radky: C-o prida prazdnou radku..samozdrejme ze to jde i pomoci enteru C-x C-o smaze prazdne radky Informace o pozici M-x what-page jaka stranka M-x what-line jaka radka M-x line-number-mode psat cisla radek...at zije basic! M-= secte radky v regionu C-x = what-cursor-position informace o kurzoru-asci kod,kolik procent,pozice.. Minibuffer ========== To jek 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: M-p zpet M-n dopredu M-r hleda v historii M-s hleda dopredu Regiony ======= Jsou vlastne normalni bloky v ostatnich editorech. C-SPC dava znacku jak na zacatku tak na konci C-@ taky C-x C-x prohodi znacku a pozici.. Drag-mouse-1 oznaci Mouse-3 znacka 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: C-s je mooc pekne vyhledavani-jak pisete co vyhledavat hned to skace na nalezene veci registry je misto kam muzete ukladat text,pozici a tak proste clipboard ale mnohem lepsi Filemanager =========== C-x C-d otevre adresar-pak muzete jezdit po fajlech,o = open a tak..bere i: C-x C-d *.c a tak.. 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: C-x b RET na buffer jmeno.. C-x 4 b RET vybere jmeno pro buffer v jinem okne C-x 5 b RET vybere buffer na jine obrazovce Vypsani bufferu: C-x C-b da takove menu kde si muzete vybrat kam chcete...v okeni verzi to je taky nahore v menu buffers C-x k znici buffer Okeni klavesy ============= C-x 2 Rozdeli okno na dve vertikalne C-x 3 " horizontalne C-x 1 pouze jedno okno.. Button 2 taky rozdeluje-na scroolbarovy liste C-x 4 rozdeluje rozpolozeni oken a obrazovce..vyzkousejte si C-x o prepinani mezi okny.. C-x v prepinani mezi okny.. Mouse 1 prepinani mezi okny.. 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. Kotelnik ......a ten nejkotlivejsi......