Ghid introductiv în GNU Emacs

Sigla cea nouă a lui<br />
EmacsÎncepem prin a spune că Emacs este o familie de editoare renumite pentru extensibilitate. Condiția ca editorul tău să facă parte din această familie selectă este să permită programarea unor noi funcționalități într-un limbaj real de programare interpetat de editor, nu doar într-un limbaj de macrouri, limitat. 

Ei bine, GNU Emacs este cel mai popular reprezentat al familiei Emacs și este dezvoltat activ în cadrul proiectului GNU.

De ce GNU Emacs

GNU Emacs este un editor liber, pentru că dezvoltatorii lui îți permit ție ca utilizator să te uiți prin codul lui sursă, să-l modifici și să-l dai mai departe cui dorești. Un aspect drăguț dar nu tocmai util deocamdată, dacă nu l-ai încercat. Și mai mult ca să te fac curios, stai să te întreb:

Știai că...

  • este extensibil, pentru că îi poți programa funcționalități noi în limbajul Lisp, grație intepretorului său încorporat, fără să fii nevoit să modifici codul sursă și să recompilezi tot programul,

Exemple: poze cu gnus, tetris și gdb

Clientul de poștă electronică Gnus, mod pentru GNU Emacs:

Gnus

Jocul Tetris, mod pentru GNU Emacs:

Tetris

Depanatorul GDB, mod pentru GNU Emacs:

Depanatorul GDB

  • este portabil, dovadă că rulează deja pe majoritatea sisteme de operare, enumerând doar câteva dintre ele: GNU/Linux, FreeBSD, Mac OS X, Solaris, HP-UX, AIX și Windows, și pe multe arhitecturi de calculatoare,

GNU Emacs pe Fedora:

GNU Emacs pe Fedora

GNU Emacs pe FreeBSD:

GNU Emacs pe FreeBSD

GNU Emacs pe Mac OS X:

GNU Emacs pe Mac OS X

GNU Emacs pe Windows 7:

GNU Emacs pe Windows 7

  • este personalizabil, pentru că îi poți schimba interfața cu utilizatorul, de la aspect (înțelegând grafie, culori, meniu, fereastră, etc.), până la comportamentul la apăsarea diverselor combinații de taste,

Diverse grafii în GNU Emacs:

  • este documentabil, dovadă că poți accesa din cadrul său tutorialul de folosire și documentația oricărei variabile, comenzi sau funcții interne?

Documentația modului organizator Orgmode.org pentru GNU Emacs:

modulul Orgmode.org în GNU Emacs

Te-ai putea întreba de ce totuși nu ai auzit până acum de GNU Emacs. Poate pentru că:

  • nu este un editor WYSIWYG, ca aplicația de birou OpenOffice.org Writer
  • nu are ferestre de dialoguri pentru comenzi de editare, cum au Gedit, Kate sau Notepad++
  • pretinde o curbă mai abruptă de învățare, în schimbul productivității ;-)
  • este folosit în special de programatorii care operează pe sisteme cu arhitectură UNIX

De GNU sunt sigur că ai auzit, proiectul de sistem de operare complet liber. :-D

Cum se instalează

După cum probabil te așteptai, GNU Emacs se poate compila din surse și instala după formula:
$ wget http://ftp.gnu.org/pub/gnu/emacs/emacs.tar.gz
$ tar xzvf emacs.tar.gz
$ cd emacs
$ ./configure
$ make
$ make install

dacă ai utilitarele wget, tar și make la îndemână, sau pe Gentoo GNU/Linux cu:
$ emerge -avt emacs

Îți recomand să descarci întotdeauna ultima versiune stabilă a surselor (pentru UNIX sau Windows).

Bineînțeles, dacă ești nerăbdător să-l încerci, poți descărca direct binarele precompilate și distribuite (eventual împachetate) de o organizație de încredere (Debian, Fedora, FreeBSD, Apple, OurComments.org).

Dacă folosești o distribuție GNU/Linux, îl poți instala mai ușor, printr-o comandă simplă, din depozitul oficial de pachete:


$ sudo apt-get install emacs

  • .deb (Debian, Ubuntu, Knoppix):


$ sudo yum install emacs

  • .rpm (Fedora, CentOS, RedHat):


$ sudo zypper in emacs

  • .rpm (OpenSUSE)

Un ecran prietenos

Și iată că a venit momentul să lansăm editorul nostru mult lăudat. Implicit, GNU Emacs afișează o interfață grafică integrată în sistemului tău de ferestre, dar ai posibilitatea să-l rulezi și în terminal, cu comanda:
$ emacs -nw

Să observăm acum că ecranul Emacs este compus din câteva zone:

  • bara de meniu în partea superioară; s-ar putea să găsești meniul folositor acum, pentru că poți accesa în mod grafic/text diverse comenzi de editare, chiar dacă nu le cunoști numele sau combinația de taste (dar nu este deloc productiv)
  • bara de unelte apare imediat sub bara de meniu dacă rulezi Emacs într-o fereastră X; de aici poți apăsa pe pictogramele unor comenzi des folosite ca „Fișier nou”, „Deschide fișier”, „Citește un director”, „Salvează”, etc.
  • fereastra de text sau ferestrele de text (orizontale și verticale) apar în zona principală a editorului și în ele sunt afișate conținuturile fișierelor deschise (dar la un moment dat este activă o singură fereastră)
  • linia de mod este ultima linie a unei ferestre de text; aici Emacs afișează informații despre fișierul deschis ca: numărul liniei curente, modurile de editare folosite pentru acel fișier deschis, dacă sunt modificări nesalvate, etc.
  • zona de ecou în partea inferioară; aici Emacs afișează mesaje informative (combinații de taste, nume de comenzi, etc.) și poți răspunde interactiv la întrebările sale

GNU Emacs cu zonele marcate:

Zonele Emacs

Câteva comenzi de bază

Înainte să ne uităm pe o mică listă de comenzi de editare, e bine de precizat că fiecare comandă are un nume și poate avea una sau mai multe combinații de taste care o lansează automat. Dacă nu cunoști combinația de taste (sau comanda nu este legată la o combinație de taste) dar cunoști numele comenzii, o poți rula tastând M-x și numele ei.

În terminologia Emacs, M- este tasta Meta, implicit mapată pe tastele Esc sau Alt. Tastele Meta și Control, reprezentate prin simbolurile M-, respectiv C-, sunt folosite de Emacs pentru a lărgi baza de combinații de taste ce pot fi legate la nume de comenzi, în scopul creșterii productivității. GNU Emacs vine implicit cu cele mai des folosite comenzi legate la combinații de taste consacrate de utilizatori, de-a lungul timpului (hei, au trecut 37 de ani de la prima versiune!).

Mai trebuie să recunosc că aproape fiecare comandă de mai jos poate fi înlocuită printr-un șir de taste cu săgeți, Del, Bcksp, Enter, PgUp, End etc., dar nu ar fi o abordare productivă. Se pierde timp prețios căutând și mutând mâinile de pe litere, pentru aceste taste speciale. :-)

comanda combinația descrierea comenzii
find-file C-x f deschide fișier sau director
execute-extended-command M-x execută comanda
next-line C-n mai jos cu un rând
previous-line C-p mai sus cu un rând
forward-char C-f la dreapta cu un caracter
backward-char C-b la stânga cu un caracter
begining-of-line C-a la început de rând
end-of-line C-e la sfârșit de rând
backward-page C-x [ la începutul paginii
forward-page C-x ] la sfârșitul paginii
keyboard-quit C-g renunță la comandă
isearch-forward C-s caută interactiv înainte
set-mark-command C-SP începutul selecției
copy-region-as-kill M-w copiază selecția
kill-region C-w decupează selecția
yank C-y lipește textul
kill-word M-d șterge cuvântul
delete-char C-d șterge caracterul
other-window C-x o altă fereastră
save-some-buffers C-x C-s salvează
save-buffers-kill-emacs C-x C-c salvează și închide

Dacă ai început să încerci comenzile din tabel, probabil ai observat că este mai dificil să apeși tastele Esc și Ctrl în combinație cu litere. Specialiștii sunt de părere că este bine să folosești Alt pentru M- și Caps pentru C-.

Pe un sistem GNU/Linux poți găsi opțiunea de a face Caps un Ctrl alternativ, în aplicația de configurare a tastaturii. Pe Windows, poți rula un script care face aceeași treabă prin adăugarea unei intrări în baza de registre sau poți seta variabile speciale de Emacs pentru tastatura de Windows.

Emacs la treabă

Hai să facem împreună un exercițiu simplu:

  • Deschide GNU Emacs.
  • Creează un nou fișier, introducere.txt.
  • Lipește următorul text:


Emacs este o familie de editoare renumite pentru extensibilitate.
Condiția ca editorul tău să facă parte din această familie selectă
este să permită programarea unor noi funcționalități într-un limbaj
real de programare interpetat de editor, nu doar într-un limbaj
de macrouri, limitat.

  • Salvează fișierul.
  • Poziționează-te la începutul paginii.
  • Înlocuiește cuvântul familie cu clasă.
  • Poziționează-te la începutul cuvântului selectă.
  • Șterge-l folosind o singură comandă.

Gata. A fost greu?

A, și dacă vrei o comandă nouă de la el, verfică mai întâi dacă nu este deja implementată (în programul de bază sau într-un modul separat), înainte să te apuci să o programezi în Elisp. :-D

Apasă M-x pentru numele comenzii, apoi Tab ca să apară o nouă fereastră cu lista comenzilor existente, în continuare tastează <C-x o> pentru a te muta în fereastra cu lista, C-s și un cuvânt care ar descrie funcționalitatea. În felul acesta eu am descoperit de curând comanda which-function-mode, care afișează numele funcției curente pentru un fișier sursă deschis în Emacs. A fost suficient să caut cuvântul func. ;-)

E, deci cum ți se pare Emacs?

Referințe

Dacă vrei să aflii mai multe până data viitoare, citește și încearcă:

  1. Un ghid în română pentru începători
  2. Un alt ghid pentru începători
  3. Încă un ghid pentru începători
  4. O listă mai comprehensivă de comenzi utile
  5. Manualul GNU Emacs

taguri:

Adaugă comentariu nou

Filtered HTML

  • Adresele de situri web şi adresele de e-mail se transformă automat în linkuri.
  • Taguri HTML permiseŞ <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <br> <sub> <sup> <small> <img>
  • Liniile şi paragrafele sunt rupte automat.

Plain text

  • Etichetele HTML nu sunt permise.
  • Adresele de situri web şi adresele de e-mail se transformă automat în linkuri.
  • Liniile şi paragrafele sunt rupte automat.
CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.
Image CAPTCHA
Enter the characters shown in the image.