Copyright (c) 1998 Tudor Hulubei -*-coding: latin-2;-*- Mulțumiri Aidei Hulubei pentru corecturi și sugestii. A se citi sfârșitul pentru condiții. Această versiune a fost produsă plecând de la versiunea în limba engleză, care este Copyright (c) 1985 Free Software Foundation, Inc. Citiți acum versiunea românească a tutorialului de Emacs. Comenzile Emacs folosesc în general tasta CONTROL (uneori denumită CTRL sau CTL) sau tasta META (uneori denumita EDIT sau ALT). În loc să scriem META sau CONTROL de fiecare dată când vrem să prefixăm un caracter, vom folosi următoarele prescurtări: C- înseamnă că țineți apăsată tasta CONTROL în timp ce tastați caracterul . Astfel, C-f înseamnă: țineți apăsată tasta CONTROL și tastați f. M- înseamnă că țineți apăsată tasta META, EDIT sau ALT în timp ce tastați . Dacă nu există tasta META, EDIT sau ALT, tastați , ridicați și apoi tastați caracterul . Am notat cu tasta ESC. Observație importantă: pentru a termina sesiunea Emacs, tastați C-x C-c. (Două caractere.) Caracterele ">>" la marginea din stânga reprezintă instrucțiuni pentru a încerca o comandă. De exemplu: <> >> Acum tastați C-v (citirea următorului ecran) pentru a vă muta la următorul ecran. (Executați această comandă acum, tinând apăsată tasta CONTROL în timp ce tastați v). De acum înainte faceți acest lucru din nou, de fiecare dată când terminați de citit ecranul. De remarcat că există o zonă de suprapunere de două linii când vă mutați de la un ecran la altul; aveți astfel o oarecare continuitate în citirea textului. Primul lucru pe care trebuie să-l stiți este cum să vă deplasați din loc în loc în text. Știți deja cum să vă mutați la următorul ecran cu C-v. Pentru a vă deplasa înapoi un ecran, tastați M-v (țineți apăsată tasta META și tastați v, sau v dacă nu aveți o tastă META, EDIT, sau ALT). >> Încercați să tastați M-v și apoi C-v de câteva ori. * SUMAR ------- Următoarele comenzi sunt utile pentru a vedea ecrane: C-v avansează un ecran M-v înapoi un ecran C-l șterge ecranul și reafișează totul poziționând textul de lângă cursor în centrul ecranului. (Este C-L, nu C-1.) >> Găsiți cursorul și țineți minte ce text este în jurul lui. Apoi tastați C-l. Găsiți cursorul din nou și observați că textul de lângă cursor este același. * COMENZI DE BAZĂ PENTRU CONTROLUL CURSORULUI --------------------------------------------- Mutatul ecran cu ecran este util, dar cum vă mutați la o anumită poziție în textul de pe ecran? Sunt mai multe modalitați în care puteți face acest lucru. Cel mai simplu este să folosiți comenzile C-p, C-b, C-f și C-n. Fiecare din aceste comenzi mută cursorul o linie sau coloană într-o anumită direcție pe ecran. Diagrama următoare prezintă aceste patru comenzi și arată direcțiile în care ele mută cursorul. Linia precedentă, C-p : : Înapoi, C-b .... Poziția curentă a cursorului .... Înainte, C-f : : Linia următoare, C-n >> Mutați cursorul la linia din mijlocul diagramei folosind C-n sau C-p. Tastați apoi C-l pentru a vedea întreaga diagramă centrată pe ecran. Vi se va părea probabil mai simplu să vă amintiți aceste comenzi gândindu-vă la semnificația lor în limba engleză: P pentru previous, N pentru next, B pentru backward și F pentru forward. Acestea sunt comenzile de bază pentru poziționarea cursorului și le veți folosi tot timpul, deci ar fi foarte util să le învățați acum. >> Tastați câteva C-n-uri pentru a aduce cursorul la această linie. >> Mutați-vă în interiorul liniei cu C-f-uri și apoi în sus cu C-p-uri. Urmăriți ce face C-p atunci când cursorul este în mijlocul liniei. Fiecare linie se termină cu un caracter NEWLINE care o separă de linia următoare. Ultima linie în fișierele dumneavoastră ar trebui să aibă un asemenea caracter la sfârșit (deși Emacs-ul nu-l necesită). >> Încercați să tastați C-b la începutul unei linii. Cursorul ar trebui să se mute la sfârșitul liniei precedente, din cauza trecerii peste caracterul NEWLINE. C-f poate să treacă peste un caracter NEWLINE, la fel ca și C-b. >> Tastați câteva C-b-uri, pentru a vă familiariza cu poziția cursorului. Tastați apoi câteva C-f-uri pentru a vă întoarce la sfârșitul liniei. Încă un C-f și vă veți muta la linia următoare. Când ajungeți să treceți peste începutul sau sfârșitul ecranului, textul aflat dincolo de margine intră în ecran, permițându-i Emacs-ului să mute cursorul la poziția specificată, fără a ieși din zona vizibilă (ecran). Această operațiune se numeste în limba engleză "scrolling". >> Încercați să mutați cursorul în afara părții de jos a ecranului cu C-n și observați ce se întamplă. Dacă mutatul caracter cu caracter este lent, puteți muta cursorul cuvânt cu cuvânt. M-f (META-f) avansează cursorul cu un cuvânt, iar M-b mută cursorul un cuvânt înapoi. >> Tastați câteva M-f-uri și apoi câteva M-b-uri. Când cursorul este în mijlocul unui cuvânt, M-f îl mută la sfârșitul cuvântului. Când cursorul este în spațiul dintre cuvinte, M-f îl mută la sfârșitul cuvântului următor. M-b acționează similar, dar în direcția opusă. >> Tastați M-f și M-b de câteva ori, intercalate cu C-f-uri și C-b-uri, pentru a observa efectul comenzilor M-f și M-b din diverse poziții în interiorul cuvintelor și între ele. Observați paralela între C-f și C-b pe de o parte, și M-f și M-b pe de cealaltă parte. De multe ori, caracterele META sunt folosite pentru operații referitoare la unitățile definite de limbaj (cuvinte, fraze, paragrafe), în timp ce caracterele CONTROL operează pe unități de bază, care sunt independente de tipul textului editat (caractere, linii, etc). Această paralelă se aplică și între linii și fraze: C-a și C-e mută cursorul la începutul și, respectiv sfârșitul unei linii, în timp ce M-a și M-e îl mută la începutul și, respectiv sfârșitul unei fraze. >> Încercați câteva C-a-uri, apoi câteva C-e-uri. Încercați câteva M-a-uri, apoi câteva M-e-uri. Remarcați cum repetarea tastării lui C-a nu schimbă nimic, în timp ce repetarea tastării lui M-a mută cursorul la fraza următoare. Deși aceste operații nu sunt tocmai analoage, fiecare pare naturală. Poziția cursorului în text mai este numită și "punct" ("point" în limba engleză). Cursorul arată pe ecran poziția punctului în text. Operațiile ce mută cursorul (inclusiv comenzile ce mută cursorul cuvânt cu cuvânt sau frază cu frază) sunt prezentate în sumarul următor: C-f avansează un caracter C-b înapoi un caracter M-f avansează un cuvânt M-b înapoi un cuvânt C-n avansează o linie C-p înapoi o linie C-a înapoi la începutul liniei C-e avansează la sfârșitul liniei M-a înapoi la începutul frazei M-e avansează la sfârșitul frazei >> Exersați toate aceste comenzi acum, sunt comenzile cele mai des folosite. Două alte comenzi importante legate de mutatul cursorului sunt M-< (META Mai-mic), care mută cursorul la începutul textului, și M-> (META Mai-mare), care mută cursorul la sfârșitul textului. Pe majoritatea terminalelor "<" este deasupra virgulei și deci este necesar să apăsați tasta SHIFT în același timp. Pe aceste terminale este nevoie să apăsați SHIFT și când tastați M-<; fără tasta SHIFT, ați apăsa M-virgulă. >> Încercați M-< acum, pentru a vă muta la începutul tutorialului. Folosiți apoi C-v în mod repetat pentru a ajunge înapoi aici. >> Încercați M-> acum, pentru a vă muta la sfârșitul tutorialului. Folosiți apoi M-v repetat pentru a ajunge înapoi aici. Puteți de asemenea să mutați cursorul cu tastele săgeți, dacă terminalul are asemenea taste. Se recomandă însă acomodarea cu C-b, C-f, C-n și C-p din trei motive. În primul rând, aceste taste funcționează pe toate tipurile de terminale. În al doilea rând, odată ce vă obișnuiți cu Emacs-ul, veți remarca faptul că tastarea lor este mai rapidă decât cea a tastelor săgeți (pentru că nu trebuie să vă schimbați poziția mâinilor pe tastatură). În al treilea rând, odată format obiceiul de a folosi aceste comenzi bazate pe CONTROL, comenzile avansate de mutat cursorul se învață foarte ușor. Majoritatea comenzilor Emacs acceptă un argument numeric; pentru majoritatea comenzilor, acest argument reprezintă un contor de repetiție. Contorul de repetiție se introduce tastând C-u, cifrele ce alcătuiesc contorul și apoi comanda. Dacă aveți tasta META (EDIT sau ALT), există și o altă alternativă pentru a introduce un argument numeric: tastați cifrele în timp ce țineți tasta META apăsată. Se recomandă însă folosirea metodei cu C-u, deoarece funcționează pe orice terminal. De exemplu, C-u 8 C-f avansează cursorul cu opt caractere. >> Încercați să folosiți C-n sau C-p cu un argument numeric pentru a muta cursorul dintr-o singură comandă pe o linie apropiată de aceasta. Majoritatea comenzilor utilizează argumentul numeric ca un contor de repetitie. Anumite comenzi speciale îl folosesc însa în mod diferit. C-v si M-v sunt printre aceste excepții. Când li se dă un argument numeric, ele mută ecranul mai sus sau mai jos cu numarul specificat de linii, nu de ecrane. De exemplu, C-u 4 C-v mută ecranul cu 4 linii. >> Încercați să tastați C-u 8 C-v acum. Această comandă trebuie să mute ecranul în sus cu 8 linii. Dacă doriti să îl mutați înapoi, puteți să-i dați lui M-v un argument numeric. Dacă folosiți sistemul X Window, există probabil o zonă rectangulară numita "scroll bar" la dreapta ferestrei Emacs-ului. Puteți deplasa textul manipulând "scroll bar"-ul cu mouse-ul. >> Încercați să apăsați butonul din mijloc al mouse-ului la mijlocul butonului din scroll bar. Aceasta ar trebui să mute textul la o poziție determinată de cât de sus sau de jos ați apăsat pe scroll bar. >> Încercați să mutați mouse-ul în sus și în jos ținând butonul din mijloc apăsat. Veți vedea că textul se deplasează în sus și în jos corespunzător cu mișcarea mouse-ului. * CÂND EMACS-ul ESTE BLOCAT --------------------------- Dacă Emacs-ul încetează să vă raspundă la comenzi, îl puteți opri, fără să pierdeți modificările făcute până acum, tastând C-g. Puteți folosi C-g pentru a opri o comandă care durează prea mult. Puteți de asemenea folosi C-g pentru a opri introducerea unui argument numeric sau începutul unei comenzi pe care nu doriți să o continuați. >> Tastați C-u 100 pentru a introduce 100 ca un argument numeric, apoi tastați C-g. Tastați apoi C-f. Cursorul ar trebui să se mute un singur caracter, pentru că ați oprit introducerea argumentului numeric cu C-g. Dacă ați tastat un din greșeală, puteți să-l anulați cu un C-g. * COMENZI DEZAFECTATE --------------------- Anumite comenzi sunt dezafectate în Emacs, în așa fel încât utilizatorii să nu le poată folosi din neatenție. Dacă tastați una din comenzile dezafectate, Emacs-ul va afișa un mesaj spunând ce comandă ați tastat și întrebându-vă dacă doriți să continuați. Dacă într-adevăr doriți să încercați comanda respectivă, tastați SPAȚIU. În mod normal, dacă nu doriți să executați comanda dezafectată, răspundeți cu "n". >> Tastați : (care este o comandă dezafectată), apoi tastați n ca răspuns la întrebarea pusă de Emacs. * FERESTRE ---------- Emacs-ul poate avea mai multe ferestre, fiecare afișând propriul său text. Vom explica mai târziu tehnicile de folosire a ferestrelor multiple. Acum vrem să explicăm cum să închideți ferestrele care ar putea apare ca rezultat al afișării unor documentații sau rezultate specifice anumitor comenzi. Este simplu: C-x 1 o singură fereastră (adică închide toate celelalte ferestre). Asta înseamnă CONTROL-x urmat de cifra 1. C-x 1 mărește fereastra care conține cursorul până când ocupă întregul ecran. Toate celelalte ferestre sunt distruse. >> Mutați cursorul la această linie și tastați C-u 0 C-l. >> Tastați C-h k C-f. Observați cum această fereastră se micșorează, în timp ce o nouă fereastră apare, afișând documentația comenzii C-f. >> Tastați C-x 1 și observați cum noua fereastră dispare. * INTRODUCEREA ȘI ȘTERGEREA --------------------------- Dacă vreți să introduceți text, pur și simplu tastați textul dorit. Caracterele pe care le puteți vedea, cum ar fi A, 7, *, etc. sunt interpretate de Emacs ca text și introduse imediat. Tastați (tasta mai este etichetată uneori) pentru a introduce un caracter NEWLINE. Puteți șterge ultimul caracter pe care l-ați introdus tastând . este o tastă pe tastatură etichetată "Del" sau "Delete". În unele cazuri tasta "Backspace" poate acționa ca , dar nu întotdeauna! Mai general, șterge caracterul dinaintea poziției curente a cursorului. >> Executați următoarele operații acum - tastați câteva caractere, apoi ștergeți-le tastând de câteva ori. Nu vă temeți că veți schimba acest fișier; nu veți altera versiunea principală a tutorialului. Aceasta este copia dumneavoastră personală. Când o linie de text devine prea mare pentru a putea fi reprezentată pe o linie de ecran, linia de text este continuată pe următoarea linie de pe ecran. Un caracter backslash ("\") la marginea din dreapta indică o linie care a fost continuată. >> Introduceți text până când depășiți cu câteva caractere marginea din dreapta a ecranului. Veți observa apariția liniei de continuare. >> Folosiți -uri pentru a șterge textul până când linia încape din nou pe o linie de ecran. Linia de continuare va dispărea. Puteți șterge un caracter NEWLINE ca pe orice alt caracter. Ștergerea unui NEWLINE dintre două linii concateneaza cele două linii. Dacă linia rezultată este prea lungă pentru a fi afișată pe ecran, va fi afișată cu o linie de continuare. >> Mutați cursorul la începutul unei linii și tastați . Aceasta concatenează linia curentă cu cea precedentă. >> Tastați pentru a reintroduce caracterul NEWLINE șters. Așa cum vă reamintiți, majoritatea comenzilor Emacs pot primi un argument numeric ce acționează ca un contor de repetiție; introducerea caracterelor ascultă aceleași reguli. Un argument numeric dat unui caracter duce la introducerea caracterului respectiv de numărul specificat de ori. >> Încercați asta acum - tastați C-u 8 * pentru a introduce ********. Ați învățat acum metodele elementare de tastat și corectat erori în Emacs. Puteți de asemenea șterge cuvinte sau linii. Acesta este un sumar al operațiilor de ștergere. șterge caracterul de dinaintea cursorului C-d șterge caracterul de după cursor M- șterge cuvântul de dinaintea cursorului M-d șterge cuvântul de după cursor C-k șterge de la poziția curentă până la sfârșitul liniei M-k șterge de la poziția curentă până la sfârșitul frazei De remarcat că și C-d versus M- și M-d extind paralela începută de C-f și M-f ( nu este cu adevărat un caracter bazat pe CONTROL, dar nu o să ne ocupăm de asta acum). C-k și M-k sunt ca C-e și M-e, într-un fel, dacă facem o paralelă între linii și fraze. Când ștergeți mai mult de un caracter la un moment dat, Emacs-ul păstrează intern textul distrus în așa fel încât îl puteți restaura. Termenul folosit de Emacs pentru operațiunea de restaurare a textului distrus este "yanking". Puteți restaura textul distrus fie în același loc, fie în alt loc în fișier. Puteți de asemenea restaura textul de mai multe ori pentru a face mai multe copii. Comanda de restaurare este C-y. Diferența dintre "distrugerea" și "ștergerea" unei porțiuni din text este aceea ca porțiunile de text "distruse" pot fi restaurate, în timp ce porțiunile de text "șterse", nu. În general, comenzile care distrug porțiuni semnificative din text, păstrează intern textul respectiv, în timp ce comenzile care șterg doar un caracter, linii goale sau spații, nu fac acest lucru. >> Mutați cursorul la începutul unei linii care nu este goală. Tastați apoi C-k pentru a distruge textul de pe linia respectivă. >> Tastați C-k o a doua oară. Veți observa distrugerea caracterului NEWLINE de la sfârșitul liniei. După cum vedeți, un singur C-k distruge conținutul liniei, iar un al doilea C-k distruge linia însăși, facând toate celelalte linii să se mute în sus. C-k tratează un argument numeric în mod special: distruge numărul specificat de linii și conținutul lor. Această comportare nu este doar o simplă repetiție. C-u 2 C-k distruge două linii și NEWLINE-urile de după ele; tastând C-k de două ori nu obțineți același rezultat. Pentru a extrage ultimul text distrus și a-l plasa la poziția curentă a cursorului, tastați C-y. >> Tastați C-y pentru a restaura textul distrus anterior. Gânditi-vă la C-y ca și cum ați recupera ceva ce v-a fost luat. Observați că dacă executați mai multe C-k-uri la rând, tot textul distrus este stocat într-o singură bucată, în așa fel încât un singur C-y va restaura toate liniile. >> Tastați acum C-k de câteva ori. Acum încercați să restaurați textul distrus: >> Tastați C-y. Mutați apoi cursorul câteva linii mai jos și tastați C-y din nou. Veți vedea cum se copiază porțiuni de text. Ce faceți dacă aveți porțiuni de text pe care vreți să le restaurați, dar între timp distrugeți o altă porțiune de text? C-y va restaura porțiunea de text care a fost distrusă cel mai recent. Cu toate acestea, textul distrus anterior nu este pierdut. Puteți să-l restaurați folosind comanda M-y. După ce ați executat C-y pentru a obține textul cel mai recent distrus, tastând M-y veți înlocui textul ce tocmai a fost restaurat cu textul distrus înaintea lui. Tastând M-y de mai multe ori puteți obține porțiuni de text distrus din ce în ce mai vechi. Odată ajunși la textul care vă interesează, puteți să continuați editarea fără să mai faceți nimic special, lasând textul restaurat în poziția în care se găsește. Dacă tastați M-y de suficient de multe ori, veți ajunge în cele din urmă la punctul de plecare (textul distrus cel mai de curând). >> Distrugeți o linie, mutați-vă puțin în jurul ei, distrugeți o altă linie. Executați apoi C-y pentru a obține înapoi cea de-a doua linie distrusă. Executați apoi M-y și veți constata că este înlocuită de prima linie distrusă. Executați mai multe M-y-uri și observați ce obțineți. Continuați să le executați până când a doua linie apare din nou, etc. Dacă doriți, puteți încerca să-i dați comenzii M-y argumente numerice pozitive și negative. * ANULARE --------- Dacă faceți o schimbare în text, și apoi constatați că ați greșit, puteți anula schimbarea cu comanda de anulare, C-x u. În mod normal, C-x u anulează schimbările făcute de o comandă; dacă repetați C-x u de câteva ori la rând, fiecare nouă repetiție anulează încă o comandă. Există însă două excepții: comenzile care nu schimbă textul nu sunt luate în considerare (acestea includ comenzile de mutat cursorul și cele de "scrolling"), iar caracterele introduse individual sunt tratate în grupuri de maxim 20. (Motivația din spatele acestei abordări este aceea de a reduce numărul de C-x u-uri pe care trebuie să le tastați pentru anularea inserărilor de text). >> Distrugeți linia aceasta cu C-k, apoi tastați C-x u; linia ar trebui să reapară. C-_ este o altă comandă de anulare; funcționează exact ca și C-x u, dar este mai ușor de tastat de mai multe ori la rând. Dezavantajul lui C-_ este că pe anumite tastaturi nu este clar cum trebuie tastat. Din acest motiv există C-x u. Pe unele terminale se poate să tastați C-_ tastând "/" în timp ce țineți apăsată tasta CONTROL. Un argument numeric la C-_ sau C-x u acționează ca un contor de repetiție. * FIȘIERE --------- Pentru a face permanente modificările din textul pe care îl editați, trebuie să-l stocați (salvați) într-un fișier. Altminteri, modificările se vor pierde în momentul părăsirii Emacs-ului. Puneți textul într-un fișier "deschizând" (sau "vizitând") fișierul. Deschiderea unui fișier înseamnă că puteți vedea conținutul fișierului în Emacs. Este ca și cum ați edita chiar fișierul, singura diferență fiind aceea că schimbările nu devin permanente până când nu îl "salvați" ("save" în limba engleză). Se evită astfel existența în sistem a unor fișiere incomplet modificate atunci când nu doriți acest lucru. Chiar și când salvați fișierul, Emacs-ul păstrează fișierul inițial (cu un nume schimbat) în așa fel încât să-l puteți recupera în cazul în care decideți că modificările efectuate au fost greșite. Aproape de marginea de jos a ecranului veți observa o linie care începe și se termină cu minusuri, și conține șirul "--:-- TUTORIAL.ro" sau ceva în genul acesta. Această parte a ecranului arată întotdeauna numele fișierului pe care îl vizitați. Acum vizitați fișierul "TUTORIAL.ro" care este copia dumneavoastră de încercări a tutorialului în limba română. Orice fișier ați edita, numele acelui fișier va apărea în poziția respectivă. Comenzile pentru găsirea și salvarea fișierelor sunt diferite de celelalte comenzi pe care le-ați învățat, în sensul că sunt compuse din două caractere. Amândouă încep cu caracterul C-x. Există o întreagă serie de comenzi care încep cu C-x; multe dintre ele sunt legate de fișiere, buffere și alte lucruri înrudite. Aceste comenzi sunt compuse din două, trei sau patru caractere. Comenzii de deschidere a unui fișier trebuie să îi spuneți numele fișierului dorit. Spunem despre comandă ca "citește un argument de la terminal" (în acest caz, argumentul este numele fișierului). După ce tastați comanda C-x C-f (deschide un fișier) Emacs-ul vă va cere să introduceți numele fișierului. Numele pe care îl tastați apare pe ultima linie a ecranului. Această linie se numeste "minibuffer" când este folosită pentru acest tip de introducere. Comenzile normale de editare în Emacs pot fi folosite și pentru editarea numelui fișierului. În timp ce introduceți numele fișierului (sau orice alt tip de introducere de date în minibuffer), puteți anula comanda cu C-g. >> Tastați C-x C-f, apoi tastați C-g. Aceasta anulează minibuffer-ul, și, de asemenea, anulează comanda C-x C-f care îl folosea. În concluzie, nu veți mai deschide nici un fișier. Când ați terminat de introdus numele fișierului, tastați pentru a-l încheia. După aceasta, comanda C-x C-f începe să lucreze și deschide fișierul pe care l-ați ales. Minibuffer-ul dispare când comanda C-x C-f se termină. După câteva momente, conținutul fișierului apare pe ecran și îl puteți edita. Când doriti să faceți schimbările permanente, tastați comanda C-x C-s (salvează fișierul) Aceasta copiază textul din Emacs într-un fișier. Prima oară când faceți acest lucru, Emacs-ul redenumește fișierul inițial în așa fel încât să nu se piardă. Noul nume este creat prin adăugarea caracterului "~" la numele inițial. Când operațiunea de salvare este terminată, Emacs-ul afișează numele fișierului salvat. Se recomandă salvarea la intervale relativ mici, pentru a nu pierde prea multă muncă în cazul unei eventuale blocări a sistemului. >> Tastați C-x C-s, pentru a salva copia tutorialului. Aceasta ar trebui să afișeze "Wrote ...TUTORIAL.ro" la marginea de jos a ecranului. OBSERVAȚIE: În unele sisteme, tastarea comenzii C-x C-s va bloca ecranul și nu veți mai primi nici un de răspuns din partea Emacs-ului. Aceasta indică faptul că o facilitate a sistemului de operare numită "controlul fluxului" ("flow control" în limba engleză) interceptează C-s, nelasându-l să ajungă la Emacs. Pentru deblocarea ecranului, tastați C-q. Puteți găsi detalii referitoare la această așa-numită "facilitate" în secțiunea "Spontaneous Entry to Incremental Search" din manualul Emacs-ului. Puteți deschide un fișier existent, pentru a-l vedea sau edita. Puteți de asemenea deschide un fișier care nu există. Aceasta este modalitatea în care creați noi fișiere cu Emacs-ul: deschideți fișierul (care va fi gol inițial), apoi începeți să introduceți text în el. Când îi veți cere să "salveze" fișierul, Emacs-ul va crea fișierul cu textul pe care l-ați introdus. De acum înainte puteți considera că editați un fișier existent. * BUFFERE --------- Dacă deschideți un al doilea fișier cu C-x C-f, primul va continua să existe în Emacs. Puteți să vă mutați înapoi la el deschizându-l din nou cu C-x C-f. În acest fel puteți avea un număr destul de mare de fișiere deschise în Emacs. >> Creați un fișier numit "foo" tastând C-x C-f foo . Introduceți un text oarecare, editați-l, apoi salvați "foo" tastând C-x C-s. În cele din urmă, tastați C-x C-f TUTORIAL.ro pentru a vă întoarce la tutorial. Emacs-ul stochează textul fiecărui fișier într-un obiect numit "buffer". Deschiderea unui fișier creează un nou buffer în Emacs. Pentru a vedea o listă a bufferelor existente în Emacs, tastați C-x C-b (lista de buffere) >> Încercați C-x C-b acum. Observați cum fiecare buffer are un nume și, uneori, un nume de fișier corespunzător fișierului al cărui conținut este menținut în buffer-ul respectiv. Unele buffere nu corespund nici unui fișier. De exemplu, buffer-ul numit "*Buffer List*" nu are nici un fișier asociat. Este buffer-ul care conține lista de buffere și a fost creat de comanda C-x C-b. Orice text pe care îl vedeți într-o fereastră a Emacs-ului este întotdeauna parte dintr-un buffer. >> Tastați C-x 1 pentru a scăpa de lista de buffere. Dacă faceți schimbări în textul unui fișier, apoi deschideți un alt fișier, primul fișier nu este salvat. Schimbările efectuate rămân în Emacs, în buffer-ul asociat acelui fișier. Crearea sau editarea buffer-ului celui de-al doilea fișier nu are nici un efect asupra buffer-ului primului fișier. Acest lucru este foarte util, dar înseamnă că aveți nevoie de o modalitate convenabilă de a salva buffer-ul primului fișier. Ar fi obositor să fie necesar să vă mutați înapoi la el cu C-x C-f pentru a-l putea salva cu C-x C-s. Din acest motiv există comanda: C-x s salvează niște buffere C-x s vă întreabă despre fiecare buffer care conține modificări (și care nu a fost salvat) dacă doriți să-l salvați. >> Introduceți o linie de text, apoi tastați C-x s. Ar trebui să vă întrebe dacă să salveze buffer-ul TUTORIAL.ro. Raspundeți "da" la întrebare tastând "y". * EXTINDEREA SETULUI DE COMENZI ------------------------------- Există mult mai multe comenzi Emacs decât combinații de taste bazate pe CONTROL și META. Soluția în Emacs este folosirea comenzilor eXtinse. Acestea sunt de două feluri: C-x eXtinde un caracter; urmată de un caracter M-x eXtinde un nume; urmată de un nume lung Acestea sunt comenzi care sunt utile în general, dar folosite mai rar decât comenzile despre care ați învățat până acum. Ați văzut deja două dintre ele: comanda de deschis fișiere (C-x C-f) și comanda de salvat fișiere (C-x C-s). Un alt exemplu este comanda de părăsit Emacs-ul: C-x C-c. (Nu vă temeți că veți pierde schimbări făcute în fișiere; înainte de a termina sesiunea curentă Emacs, C-x C-c vă va întreba dacă doriți să salvați fișierele modificate.) C-z este comanda cu care puteți ieși din Emacs *temporar* - astfel încât să puteți să vă întoarceți la aceeași sesiune Emacs mai târziu. Pe sistemele unde este posibil, C-z "suspendă" Emacs-ul; asta înseamnă că, deși vă veți întoarce la prompt-ul shell-ului, Emacs-ul nu a fost distrus. În shell-urile (interpretoarele de comenzi Unix) cele mai uzuale puteți reactiva Emacs-ul cu comanda `fg' sau `%emacs'. Pe sistemele care nu implementează mecanismele de suspendare, C-z creează un subshell care rulează sub Emacs pentru a vă oferi posibilitatea de a rula alte programe și de a vă întoarce la Emacs mai târziu; pe aceste sisteme C-z nu iese cu adevărat din Emacs - comanda `exit' la promptul subshell-ului este modalitatea uzuală de a vă întoarce în Emacs. În general C-x C-c se folosește înainte de părăsirea sistemului. Puteți folosi această comandă și pentru a ieși din instanțe de Emacs lansate de programe de citit mail sau alte utilitare, deoarece acestea s-ar putea să nu fie capabile să folosească facilitațile de suspendare ale Emacs-ului. În mod normal însă, dacă nu sunteți pe cale să părăsiți sistemul, este mai bine să suspendați Emacs-ul cu C-z decât să ieșiți complet cu C-x C-c. Emacs-ul are multe comenzi prefixate cu C-x. Aceasta este lista celor pe care le-ați învățat până acum: C-x C-f deschide un fișier C-x C-s salvează fișierul C-x C-b listează bufferele C-x C-c părăsește Emacs-ul C-x u anulează Comenzile eXtinse cu nume sunt comenzile care sunt folosite și mai rar sau comenzile care sunt folosite numai în anumite moduri. Un exemplu este comanda replace-string (înlocuiește-șir) care înlocuiește global toate aparițiile unui șir de caractere cu alt șir de caractere. Când tastați M-x, Emacs-ul afișează pe ultima linie de pe ecran "M-x" și puteți introduce numele comenzii - în cazul nostru "replace-string". Puteți să tastați doar "repl s" și Emacs-ul va completa numele. Terminați comanda cu . Comanda replace-string necesită două argumente - șirul ce va fi înlocuit și șirul înlocuitor. La sfârșitul introducerii fiecărui argument trebuie să tastați . >> Mutați cursorul pe linia goală care se găseste două linii mai jos. Tastați apoi M-x repl smodificatalterat. Observați modul în care această linie s-a modificat: ați înlocuit toate aparițiile cuvântului s-c-h-i-m-b-a-t cu "alterat", după poziția inițială a cursorului. * SALVARE AUTOMATĂ ------------------ Dacă ați facut schimbări într-un fișier, dar nu le-ați salvat, aceste schimbări se pot pierde în cazul în care sistemul se blochează. Pentru a vă proteja munca, Emacs-ul salvează periodic un fișier de "autosalvare" pentru fiecare fișier pe care îl editați. Acest fișier are un "#" la început și unul la sfârșit; de exemplu, dacă fișierul dumneavoastră se numeste "hello.c", fișierul de autosalvare corespunzător se va numi "#hello.c#". Când salvați fișierul în mod normal, Emacs-ul șterge fișierul de autosalvare. În cazul unei căderi a sistemului, puteți să vă recuperați fișierul de autosalvare deschizând fișierul în mod normal (fișierul pe care îl editați, nu pe cel de autosalvare) și tastând după aceea M-x recover file. Când vi se cere confirmarea, tastați yes pentru a continua și a recupera fișierul. * ZONA DE ECOU -------------- Dacă Emacs-ul observă că tastați comenzile încet, vi le va arăta la marginea de jos a ecranului într-o zona numită "zona de ecou". Zona de ecou conține cea mai de jos linie a ecranului. * LINIA DE MOD -------------- Linia de deasupra zonei de ecou se numește "linia de mod" ("mode line" în limba engleză). Linia de mod conține ceva de genul: --**-Emacs: TUTORIAL (Fundamental)--L670--58%---------------- Această linie prezintă informații utile despre starea Emacs-ului și despre textul pe care îl editați. Stiți deja ce înseamnă numele fișierului - este fișierul pe care l-ați deschis. -NN%-- indică poziția curentă a cursorului în text - NN la sută din text este deasupra primei linii de pe ecran. Dacă începutul fișierului este vizibil pe ecran, veți vedea --Top-- în loc de --00%--. Dacă sfârșitul fișierului este vizibil pe ecran, veți vedea --Bot-- (de la "bottom" în limba engleză). Dacă fișierul este atât de mic, încât încape în întregime pe ecran, pe linia de mod veți vedea --All--. Stelele de la începutul liniei de mod semnalizează existența unor modificări nesalvate în text. Imediat după deschiderea fișierului, porțiunea respectivă din linia de mod nu conține nici o stea, doar minusuri. Porțiunea dinăuntrul parantezelor vă spune modul de editare curent. Modul implicit este "Fundamental", modul pe care îl folosiți chiar acum. Este un exemplu de "mod major". Emacs-ul are multe moduri majore. Unele dintre ele sunt destinate editării diferitelor limbaje și/sau tipuri de text, cum ar fi modul Lisp, modul Text, etc. Numai un mod major poate fi activ la un moment dat și numele său va fi întotdeauna acolo unde este "Fundamental" acum. Fiecare mod major schimbă comportamentul unor comenzi. De exemplu există comenzi pentru crearea comentariilor într-un program, dar, cum fiecare limbaj de programare are o idee diferită despre felul cum ar trebui să arate un comentariu, fiecare mod major trebuie să le introducă într-un alt fel. Există câte o comandă asociată fiecărui mod major - aceasta este modalitatea de a schimba modul major. De exemplu, M-x fundamental-mode este comanda cu care poate fi ales modul "Fundamental". Dacă editați text în limba română, cum ar fi de exemplu acest fișier, ar trebui probabil să folosiți modul Text. >> Tastați M-x text-mode. Nu vă temeti, nici una din comenzile pe care le-ați învățat până acum nu schimbă Emacs-ul prea mult. Puteți observa acum că M-f și M-b tratează apostrofurile ca parte din cuvinte. Înainte, în modul Fundamental, M-f și M-b tratau apostrofurile ca separatoare de cuvinte. Modurile majore operează schimbări subtile, ca cea descrisă mai sus. Majoritatea comenzilor execută aceeași operație în fiecare mod major, dar funcționează puțin diferit. Pentru a vedea documentația referitoare la modul major curent, tastați C-h m. >> Folosiți C-u C-v o dată sau de mai multe ori pentru a aduce această linie aproape de începutul ecranului. Tastați C-h m ca să aflați diferențele dintre modul Text și modul Fundamental. Tastați C-x 1 pentru a șterge documentația de pe ecran. Modurile majore se numesc "majore" pentru că există și moduri minore. Modurile minore sunt ajustări minore ale modurilor majore. Fiecare mod minor poate fi activat sau dezactivat separat, independent de celelalte moduri minore și independent de modul major curent. Puteți să nu folosiți nici un mod minor, un mod minor sau orice combinație de moduri minore. Un mod minor care este foarte util, în mod special când editați text, este modul "Auto Fill". Când acest mod este activat, Emacs-ul sparge automat liniile la spațiul dintre cuvinte de fiecare dată când introducând text creați o linie care este prea lungă. Puteți activa modul "Auto Fill" executând M-x auto-fill-mode. Când acest mod este activat, îl puteți dezactiva executând aceeași comandă. Dacă modul este dezactivat, această comandă îl activează, când este activat, comanda îl dezactivează. Se spune că această comandă inversează modul. >> Tastați M-x auto-fill-mode acum. Introduceți apoi o linie conținând "asdf " de mai multe ori, până când linia se sparge în două. Trebuie să puneți spații între cuvinte pentru că Auto Fill sparge linia numai la spații. Marginea este stabilită în mod normal la 70 de caractere, dar puteți schimba această valoare cu comanda C-x f. Introduceți valoarea dorită ca argument numeric pentru C-x f. >> Tastați C-x f cu 20 ca argument numeric. (C-u 2 0 C-x f). Introduceți apoi un text oarecare și observați cum Emacs-ul umple linii de maximum 20 de caractere. Restaurați marginea la 70 de caractere folosind din nou C-x f. Dacă faceți schimbări în mijlocul unui paragraf, modul Auto Fill nu rearanjează paragraful. Pentru a face acest lucru, trebuie să tastați M-q (META-q) cu cursorul poziționat înăuntrul paragrafului. >> Mutați cursorul în paragraful precedent și tastați M-q. * CĂUTARE --------- Emacs-ul poate caută șiruri (grupuri continue de caractere sau cuvinte) fie înainte, fie înapoi (față de poziția curentă a cursorului în text). Căutarea unui șir este o operație ce mută cursorul; cursorul este mutat în poziția corespunzătoare următoarei apariții a șirului în text. Căutarea este diferită în Emacs față de majoritatea editoarelor, deoarece este "incrementală". Asta înseamnă că execuția operațiunii de căutare se face în timp ce tastați șirul de căutat. Comanda ce inițiază căutarea este C-s pentru căutare înainte și C-r pentru căutare înapoi. AȘTEPTAȚI! Nu le încercați acum. Când tastați C-s veți remarca faptul că șirul "I-search" apare ca prompt în zona de ecou. Aceasta vă spune că Emacs-ul este în modul de căutare incrementală, așteptând ca dumneavoastră să introduceți șirul pe care doriți să-l căutați. Căutarea poate fi terminată cu . >> Tastați acum C-s pentru a porni o căutare. ÎNCET, câte o singură literă la un moment dat, tastați cuvântul "cursor", făcând o pauză după fiecare caracter tastat ca să observați ce se întamplă cu cursorul. Acum ați terminat de căutat prima apariție a cuvântului "cursor". >> Tastați C-s din nou, pentru a căuta următoarea apariție a cuvântului "cursor". >> Tastați acum de patru ori și observați mișcarea cursorului. >> Tastați pentru a termina căutarea. Ați observat ce s-a întamplat? În timpul unei căutări incrementale Emacs-ul încearcă să se poziționeze pe prima apariție a șirului pe care l-ați introdus până în momentul respectiv. Dacă vreți să vă poziționați pe următoarea apariție a cuvântului "cursor", nu trebuie decât să tastați C-s încă o dată. Dacă nu mai există o altă apariție, Emacs-ul va emite un sunet și vă va anunța că operațiunea de căutare a eșuat ("failed" în limba engleză). C-g este o altă metodă de a termina căutarea. OBSERVAȚIE: Pe unele sisteme, C-s va bloca ecranul și nu veți mai primi nici un răspuns de la Emacs. Aceasta indică faptul că o "facilitate" a sistemului de operare numită "controlul fluxului" ("flow control" în limba engleză) interceptează caracterul C-s și acesta nu mai ajunge la Emacs. Pentru deblocarea ecranului, apăsați C-q. Puteți găsi detalii referitoare la această așa-numită "facilitate" în secțiunea "Spontaneous Entry to Incremental Search" din manualul Emacs-ului. Dacă sunteți în mijlocul unei căutări incrementale și tastați , veți observa că ultimul caracter în căutarea incrementală este șters și căutarea se întoarce la poziția anterioară. De exemplu, să presupunem că ați tastat "c", pentru a căuta prima apariție a lui "c". Dacă tastați "u", cursorul se va muta la prima apariție a lui "cu". Tastați acum . Aceasta va șterge "u"-ul din șirul de căutare și cursorul se va muta înapoi la prima apariție a lui "c". Căutarea incrementală poate fi terminată prin tastarea unui caracter bazat pe CONTROL sau META (cu câteva excepții - caracterele care sunt specifice căutării, cum ar fi C-s și C-r). C-s începe o căutare care inspectează textul de DUPĂ poziția curentă a cursorului. Dacă doriți să căutați în textul dinaintea poziției curente a cursorului, folosiți C-r. Toată discuția referitoare la C-s se aplică și comenzii C-r, cu mențiunea că direcția de căutare este inversă. * FERESTRE MULTIPLE ------------------- Una dintre facilitățile importante ale Emacs-ului este aceea de a afișa pe ecran mai multe ferestre simultan. >> Mutați cursorul pe această linie și tastați C-u 0 C-l. >> Tastați acum C-x 2 pentru a împărți ecranul în două ferestre. Amândouă ferestrele vor afișa acest tutorial. Cursorul va rămane în fereastra din partea de sus a ecranului. >> Tastați C-M-v pentru a mișca textul din fereastra de jos. (Dacă nu aveți o tastă META, tastați ESC C-v.) >> Tastați C-x o ("o" de la "other" - "cealaltă" în limba engleză) pentru a muta cursorul în fereastra de jos. >> Tastați C-v și M-v în fereastra de jos pentru a muta textul. Continuați să citiți aceste instrucțiuni în fereastra de sus. >> Tastați C-x o din nou pentru a muta cursorul înapoi în fereastra de sus. Cursorul va fi plasat în locul unde a fost anterior. Puteți continua să folosiți C-x o pentru a vă muta între ferestre. Fiecare fereastră are propria ei poziție a cursorului, dar numai o fereastră arată cursorul la un moment dat. Toate operațiile normale de editare au efect în fereastra în care se găsește cursorul - fereastra respectivă se numește "fereastra selectată". Comanda C-M-v este foarte utilă când editați text într-o fereastră și folosiți cealaltă fereastră pentru a citi documentații. Puteți ține întotdeauna cursorul în fereastra în care editați, în timp ce avansați textul din cealaltă fereastră cu C-M-v. C-M-v este un exemplu de caracter CONTROL-META. Dacă aveți o tastă META, puteți tasta C-M-v ținând apăsate și CONTROL și META când tastați v. Nu contează care dintre CONTROL sau META este apăsată mai întâi, pentru că amândouă acționează prin modificarea caracterului pe care îl tastați. Dacă nu aveți o tastă META și folosiți ESC în loc, ordinea este importantă: trebuie să tastați ESC urmat de CONTROL-v; CONTROL-ESC v nu va funcționa, din cauza faptului că ESC este un caracter de sine stătător, nu un modificator. >> Tastați C-x 1 (în fereastra de sus) ca să renunțați la fereastra de jos. (Dacă ați tastat C-x 1 în fereastra de jos, această comandă va închide fereastra de sus. Gândiți-vă la ea așa "Păstrează doar o fereastră - cea în care sunt acum.") Nu este nevoie să afisați același buffer în ambele ferestre. Dacă folosiți C-x C-f pentru a deschide un fișier într-o fereastră, cealaltă fereastră nu se schimbă. Puteți deschide un fișier diferit în fiecare fereastră. O altă modalitate de a folosi două ferestre ca să afișați lucruri diferite: >> Tastați C-x 4 C-f apoi numele unui fișier. Terminați comanda cu Observați că fișierul specificat apare în fereastra de jos. Cursorul la fel. >> Tastați C-x o pentru a vă muta în fereastra de sus, apoi tastați C-x 1 pentru a șterge fereastra de jos. * NIVELURI DE EDITARE RECURSIVĂ ------------------------------- Uneori veți intra în ceea ce se numeste un "nivel de editare recursivă". Acesta este indicat de prezența unor paranteze drepte în linia de mod în jurul numelui modului major. De exemplu, s-ar putea să vedeți [(Fundamental)] în loc de (Fundamental). Pentru a ieși din nivelul de editare recursivă, tastați ESC ESC ESC. Aceasta este o comandă de ieșire de uz general. O puteți folosi și ca să ieșiți din minibuffer sau ca să eliminați ferestrele în plus. >> Tastați M-x pentru a intra în minibuffer; tastați apoi ESC ESC ESC ca să ieșiți. Nu puteți folosi C-g pentru a ieși dintr-un nivel de editare recursivă deoarece comanda C-g este folosită pentru a anula comenzi și argumente înăuntrul unui nivel de editare recursivă. * CUM PUTEȚI OBȚINE MAI MULTE INFORMAȚII ---------------------------------------- În acest tutorial am încercat să furnizăm suficiente informații pentru a face primii pași în Emacs. Există atât de multe comenzi în Emacs încât ar fi imposibil să le explicăm pe toate aici. S-ar putea însă să doriți să învațați mai multe despre Emacs, deoarece oferă foarte multe facilitați interesante. Există comenzi pentru a citi documentația despre comenzile Emacs-ului. Aceste comenzi ajutătoare sunt prefixate cu caracterul C-h, denumit și "caracterul de ajutor". Pentru a folosi aceste facilități de ajutor, tastați caracterul C-h, apoi un caracter ce specifică tipul de ajutor de care aveți nevoie. În cazul în care sunteți nelămurit, tastați C-h ? și Emacs-ul vă va spune ce fel de ajutor vă poate oferi. Dacă ați tastat C-h și vă răzgândiți (nu mai doriți ajutor) puteți tasta C-g pentru a anula comanda. (Anumite site-uri remapează caracterul C-h. Nu ar trebui să facă asta orbește pentru toți utilizatorii - aveți motiv să vă plângeți administratorului de sistem. Între timp, dacă C-h nu afișează un mesaj despre ajutor la marginea de jos a ecranului, încercați M-x help în loc.) Comanda elementară de ajutor este C-h c. Tastați C-h, apoi caracterul c și o comandă alcătuită dintr-un caracter sau secvență de caractere și Emacs-ul va afișa o scurtă descriere a comenzii. >> Tastați C-h c C-p. Mesajul ar trebui să fie ceva de genul C-p runs the command previous-line Aceasta vă spune "numele funcției". Numele de funcții sunt folosite în principal pentru a adapta și extinde Emacs-ul, dar, cum numele funcțiilor sunt alese în așa fel încât să indice actiunea comenzii respective, ele pot servi ca o documentație foarte scurtă, suficientă ca să vă amintească de comenzi pe care le-ați învățat deja. Comenzile formate din mai multe caractere (cum ar fi C-x C-s) și (dacă nu aveți o tasta META, EDIT sau ALT) v sunt de asemenea permise după C-h c. Pentru a obține mai multe informații despre o comandă, folosiți C-h k în loc de C-h c. >> Tastați C-h k C-p. Această comandă afișează documentația și numele funcției într-o fereastră separată. Când terminați de citit, tastați q pentru a o elimina. Nu trebuie să faceți acest lucru imediat. Puteți edita o vreme, citind textul din fereastra de ajutor. Câteva comenzi C-h utile: C-h f descrie o funcție al cărei nume trebuie să-l introduceți >> Încercați să tastați C-h f previous-line. Aceasta afișează toată informația pe care o are Emacs-ul despre funcția ce implementează comanda C-p. C-h a Command Apropos. Tastați un cuvânt cheie și Emacs-ul va lista toate funcțiile și variabilele ale căror nume conțin acel cuvânt cheie. La stânga comenzilor care pot fi invocate cu M-x va fi afișată o steluță. Pentru unele comenzi, Command Apropos va lista o secvență de unul sau două caractere ce execută aceeași comandă. >> Tastați C-h a fișier. Aceasta afișează într-o altă ferastră o listă a tuturor comenzilor M-x al căror nume conține "fișier". Veți vedea caractere-comandă de genul C-x C-f listate lângă comanda nume corespunzătoare (find-file). >> Tastați C-M-v ca să deplasați conținutul ferestrei de ajutor. Faceți acest lucru de câteva ori. >> Tastați C-x 1 pentu a șterge fereastra de ajutor. * CONCLUZII ----------- Țineți minte, pentru a ieși permanent din Emacs, folosiți C-x C-c. Pentru a ieși temporar într-un shell (în așa fel încât să vă puteți întoarce la Emacs mai târziu) folosiți C-z. Acest tutorial a fost organizat în așa fel încât să fie pe înțelesul noilor utilizatori - nu vă sfiiți să vă plângeți autorilor dacă gasiți ceva neclar! COPIERE ------- Acest tutorial este rezultatul prelucrării unei serii lungi de tutoriale pentru Emacs derivate din cel scris de Stuart Cracraft pentru versiunea inițială de Emacs. Cu scopul evitării oricăror confuzii datorate traducerii, las în continuare noțita de copyright originală în limba engleză. This version of the tutorial, like GNU Emacs, is copyrighted, and comes with permission to distribute copies on certain conditions: Copyright (c) 1985, 1996 Free Software Foundation Permission is granted to anyone to make or distribute verbatim copies of this document as received, in any medium, provided that the copyright notice and permission notice are preserved, and that the distributor grants the recipient permission for further redistribution as permitted by this notice. Permission is granted to distribute modified versions of this document, or of portions of it, under the above conditions, provided also that they carry prominent notices stating who last altered them. Condițiile de copiere a Emacs-ului sunt mai complexe, dar în același spirit. Citiți fișierul COPYING și apoi distribuiți prietenilor copii ale Emacs-ului. Contribuiți la eliminarea obstrucționismului software folosind, scriind și distribuind free software!