1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-11-26 07:33:47 +00:00
emacs/etc/TUTORIAL.ro

1112 lines
46 KiB
Plaintext
Raw Normal View History

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