Movatterモバイル変換


[0]ホーム

URL:


Przejdź do zawartości
Wikipediawolna encyklopedia
Szukaj

Emacs

Z Wikipedii, wolnej encyklopedii
Emacs
Logo Emacs
Logo programu
Ilustracja
AutorProjekt GNU
Pierwsze wydanie1976
RodzajEdytor tekstu
LicencjaGNU GPL
Strona internetowa

Emacs – rodzinaedytorów tekstu, znana ze swojej rozszerzalności. Podręcznik najpopularniejszego wariantu GNU Emacs opisuje go jako „rozszerzalny, dostosowywalny, samodokumentujący się, edytor wyświetlany w czasie rzeczywistym”[1]. Rozwój pierwszych Emacsów rozpoczął się w połowie lat siedemdziesiątych, a prace nad GNU Emacsem są kontynuowane (2022).

Emacs jest przykłademwolnego oprogramowania, a nie jedynie oprogramowaniaopen source.

Historia

[edytuj |edytuj kod]

Pierwotna wersja Emacsa została napisana w 1976 roku przez programistę zMIT,Richarda Stallmana, jako zestaw makr dla edytora o nazwieTECO(inne języki)[2]. Nazwa edytora jestakronimem pochodzącym od słóweditor imacros (dokładnie odEditor for MACroS)[2]. Oryginalna wersja powstała dla systemuITS[2]. Została ona następniesportowana dla systemówTOPS-10 iTOPS-20 (dlaminikomputeraPDP-10)[2].

Z czasem powstało wiele klonów edytora, do najwcześniejszych należąMultics Emacs stworzony przez Berniego Greenberga oraz Gosling Emacs autorstwaJamesa Goslinga (dla systemuUNIX)[2].

Powstawały też wersje edytora dlamikrokomputerów, jednak część z nich nie była zgodna z podstawowymi założeniami oryginału (w szczególności, nie była rozszerzalna). Zgodność sprowadzała się do użycia emacsowych buforów oraz tych samychskrótów klawiaturowych.[2]

W roku 1984 Stallman zaczął pisać nową wersję Emacsa,GNU Emacs, który stał się pierwszym programem projektuGNU[3]. W rok później ukazała się wersja GNU Emacs 15.34, która była już oficjalnie dystrybuowana. 23 lutego 2008 roku Richard Stallman napisał na emacs-devel[4], iż (po około 20 latach opieki nad programem) chciałby powierzyć projekt Stefanowi Monnier i Chongowi Yidong.

Charakterystyka

[edytuj |edytuj kod]

Emacs składa się z niewielkiego i wydajnego jądra napisanego wC, zawierającego teżinterpreter dialektuLispu zwanegoEmacs Lisp, oraz z ogromnej nadbudowy napisanej wLispie i wykonywanej przez to jądro.Dzięki takiej konstrukcji Emacs jest elastyczny, a jego zachowanie można w pełni kontrolować przy użyciuEmacs Lispa.

Rozszerzeniami typowymi dla edytorówprogramisty, są podświetlanie i automatyczne formatowaniekodu źródłowego, oraz integracja zmake,systemami kontroli wersji ikompilatorami.Mniej typowe zastosowania to przeglądanie katalogów, obsługa urządzeń typumodemy,aż do zupełnie nietypowych, jak: graficzna przeglądarka stronWWW, klientpoczty elektronicznej, gry komputerowe czy implementacjaELIZY.

Istnieją dwie wersje Emacsa wywodzące się z pierwotnego kodu, znane jako GNU Emacs iXEmacs, oraz ogromna liczba edytorów i innych narzędzi wzorowanych na Emacsie.

Dzięki dodatkowym narzędziometags i ctags istnieje możliwość szybkiego „poruszania” się po dużych projektach programistycznych.

Tryby uruchomieniowe

[edytuj |edytuj kod]

GNU Emacs może być uruchamiany w dwóch trybach – tekstowym i graficznym. Uruchamiając Emacsa wTerminalu bez środowiskaX, uruchomi siętryb tekstowy. Natomiast wewnątrzX Window uruchomi się tryb graficzny. Istnieje także możliwość uruchomienia Emacsa w trybie tekstowym wemulatorze terminala wInterfejsie graficznym. Istnieje także możliwość uruchomienia Emacsa jakoserwera, w którym wszystkieklienty współdzielą te same bufory[5].

Sekwencje i skróty klawiszowe

[edytuj |edytuj kod]

W Emacsie każde pojedyncze wciśnięcie klawisza lub sekwencji klawiszy wywołuje funkcję napisaną w językuEmacs Lisp. W większości trybów pojedyncze wciśnięcie klawisza powoduje wywołanie funkcjiself-insert-command, która wstawia pojedynczy znak do bufora[6]. Oprócz podstawowychskrótów klawiszowych istnieją także sekwencję rozpoczynające się odC-x (Control+X) lubC-c (Ctrl+C). Skrót M-x (znakmeta lubAlt) umożliwia wywołanie dowolnej funkcji wEmacs Lispie, która została utworzona z możliwością wywołania interaktywnego (wewnątrz funkcji musi być wywołanie(interactive)).

Przykładowe skróty klawiszowe

[edytuj |edytuj kod]

Poniższa tabela zawiera kilka podstawowych skrótów klawiaturowych i sekwencji oraz ich standardowe wiązania do funkcji wEmacs Lispie.

FunkcjaSkrót klawiszowyOpis
forward-charC-fPrzesunięcie o jeden znak do przodu.
backward-charC-bPrzesunięcie o jeden znak do tyłu.
backward-lineC-pPrzesunięcie o jedną linie do góry.
forward-lineC-nPrzesunięcie o jedną linie w dół.
forward-wordM-fPrzesunięcie o słowo do przodu.
search-wordC-sSzukanie słowa w buforze.
scroll-upM-vPrzesunięcie o jeden ekran do góry
scroll-downC-vPrzesunięcie o jeden ekran w dół
undoC-/C-_ lubC-x uCofnięcie ostatniej zmiany.
keyboard-quitC-gZaniechanie ostatniej komendy.
fill-paragraphM-qWyrównanie tekstu do lewej krawędzi.
find-fileC-x C-fOdwiedzenie pliku (otworzenie lub stworzenie nowego pliku).
save-bufferC-x C-sZapis aktualnego bufora.
write-fileC-x C-wZapisz jako...
save-buffers-kill-emacsC-x C-cWyjście z Emacsa.
set-markerC-[space]/C-@Zaznaczenie tekstu, które chcesz skopiować czy wyciąć.
cutC-wWycięcie zaznaczonego tekstu.
copyM-wSkopiowanie zaznaczonego tekstu.
pasteC-yWklejenie tekstu ze schowka.
kill-bufferC-x kZamknij bufor, jeżeli nie ma podanej nazwy zostanie zamknięty obecny bufor.
save-buffers-kill-terminalC-x C-cZamknięcie Emacsa

Tryby Emacsa

[edytuj |edytuj kod]

Są tobiblioteki programistyczne, które dodają jakąś dodatkową funkcjonalność do edytora, zazwyczaj uruchamiane są automatycznie dla określonego typu pliku. Istnieją dwa typy trybów Emacsa główny (Major) i pomniejszy (Minor). Istnieją tryby główne dla większościjęzyków programowania, które m.in. kolorują składnie, dodają nowe funkcje, nowe kombinacje klawiszy lub inteligentne „wcinanie”kodu źródłowego. Pomniejsze tryby służą zazwyczaj do dodania jakiejś jednej funkcji np. wyświetlanie zegarka, czy liczby wierszy. Dla pojedynczego bufora może być wywołany tylko jeden tryb głównych oraz wiele pomniejszych[5]. Istnieje także tryb polymode, który umożliwia uruchomienie wielu trybów głównych, dla różnych części bufora[7].

Bufory

[edytuj |edytuj kod]

W Emacsie wszystkie operacje wykonywane są na buforach. Bufor jest to zazwyczajplik nadysku, który można wyświetlić wewnątrz okna, który znajduje się w pamięci Emacsa. Buforem może być też zawartość katalogu, strona internetowa czy inna treść stworzona przez edytor np. gra[5].

Minibufor

[edytuj |edytuj kod]

Jest to obszar na dole okna, wewnątrz którego wyświetlane są wyniki działania komend oraz służy do wprowadzania dodatkowych argumentów dla funkcji[5].

Okna

[edytuj |edytuj kod]

Oknem (ang.window) w Emacsie określa się obszar, w którym wyświetlany jest Bufor. Nie należy go mylić zoknem programu uruchomionego w trybieGUI, na które w Emacsie mówi się „ramka”. Wewnątrz pojedynczej ramki programu można wyświetlać wiele okien z wyświetlanym buforem. Do dzielenia okna w poziomie służy sekwencjaC-x 3 (wywołująca funkcjęsplit-window-horizontally) natomiast do dzielenia w pionie służy sekwencjaC-x 2 (funkcjasplit-window-vertically), do usunięcia aktualnego okna służy sekwencjaC-x 0 (funkcjadelete-window). W Emacsie można mieć uruchomione dwa okna wyświetlające ten sam bufor – modyfikacja bufora w jednym oknie natychmiastowo uaktualnia drugi bufor. Okna mogą mieć różny rozmiar. Istnieje możliwość uruchomieniaemulatora terminala(inne języki) wewnątrz okna[5].

Ramki

[edytuj |edytuj kod]

Ramką (ang.frame) określa się okno programu w trybie graficznym, w którym może być wiele okien. W trybie tekstowym wyświetlana jest naraz tylko jedna ramka[5].

Hooki

[edytuj |edytuj kod]

Hooki Emacsa służą do wywoływania kodu użytkownika w odpowiednim momencie, np. gdy uruchomiony jest określony tryb. Przykładowo wewnątrz Hooka dla trybu głównegolisp-mode (uruchamianego dla programów w językuLisp), można utworzyć dodatkowe wiązania funkcji (ang.binding) do skrótów klawiszowych, ułatwiające prace z plikami w tym języku lub uruchomić tryby pomniejsze, które powinny być włączone tylko dla tego trybu głównego.

Etags i ctags

[edytuj |edytuj kod]

Są to programy, które generują indeksy definicji wewnątrzplików źródłowych. Po wygenerowania pliku Tags dla danego kodu źródłowego, składającego się z wielu plików, można używać skrótuM-. (Meta lubAltikropka) do przechodzenia z miejsca, gdzie wywołano funkcję, do miejsca, w którym ta funkcja została zdefiniowana.

Zobacz też

[edytuj |edytuj kod]
Zobacz publikację
Emacs w Wikibooks

Przypisy

[edytuj |edytuj kod]
  1. GNU Emacs Pocket Reference PDF Download Free | 1565924967 [online], ebooks-it.org [dostęp 2019-07-04] .
  2. abcdefIan F. Darwin. A Public Domain UNIX Clone and a C Programming Book for UNIX users. „Micro/Systems Journal”. 3 (6), s. 72-75, Listopad-Grudzień 1987. ISSN 8750-9482. (ang.). 
  3. Emacs History. (ang.).
  4. Re: Looking for a new Emacs maintainer or team [online], lists.gnu.org [dostęp 2019-07-04] .
  5. abcdefGNU Emacs Manual. (ang.).
  6. B. Lewis, D. LaLiberte,R. Stallman: GNU Emacs Lisp Reference Manual.
  7. Framework for Multiple Major Modes in Emacs (core library). GitHub.

Linki zewnętrzne

[edytuj |edytuj kod]
Projekt GNU
Historia
Licencje
Programy
Postacie

GNU’s not a gnu

Źródło: „https://pl.wikipedia.org/w/index.php?title=Emacs&oldid=78492884
Kategorie:
Ukryta kategoria:

[8]ページ先頭

©2009-2026 Movatter.jp