Normalne uruchamianie to
emacs nazwa-pliku
Istnieje sposób uruchamiania edytora emacs ze specyfikacją kilku plików:
emacs plik1 +100 plik2Jeżeli nie ma plików
file1
i file2
, to edytor utworzy je.
Opcja +100
spowoduje ustawienie na setnym wierszu.
Wiele narzędzi wybiera edytor na podstawie wartości zmiennej powłoki
EDITOR
, można ją więc ustawić w shellu
EDITOR=emacs
Ustawienie tej zmiennej jako
EDITOR=emacsclientpowoduje, że program pocztowy
mutt
itp. narzędzia próbują otworzyć
nowy bufor w istniejącej sesji (procesie) Emacsa.
Pracę z edytorem kończymy naciskając kolejno Ctrl-x Ctrl-c
.
Klawisz
pozwala korzystać z menu w trybie tekstowym.
--unibyte
Wyłącza domyślny multibyte. Zamiast niej można ustawić zmiennąenable-multibyte-characters
nanil
.
Pierwsza linia to nagłówek pliku. Tam umieszczamy informacje o wybranym trybie, na przykład
-*- C -*-
powoduje przejście w tryb c-mode
dla otwieranego bufora.
Podstawowym trybem jest fundamental
(nie trzeba wybierać).
Zwykle tryby wiążą się z językiem, w którm jest napisany plik.
Może to być język programowania, ale nie tylko, na przykład tryb
LaTeX
.
Jeśli nie podamy trybu w nagłówku to bufer otrzyma tryb na podstawie rozszerzenia nazwy pliku.
Oprócz wyboru trybu można w nagłówku umieszczać inne wskazówki, na przykład
-*- unibyte:t; -*-
Jednobajtowa interpretacja znaków.
To, co w systemie operacyjnym nazywamy oknem, w Emacsie jest nazywane ramką (\textit{frame}). Terminu okno używa się dla wewnętrznych okien w ramkach.
Głównym plikiem konfiguracyjnym jest default.el
, z katalogu
.../emacs/site-lisp/
, np. /usr/share/emacs/site-lisp/
.
Prywatne pliki konfiguracyjne użytkowników to .emacs
.
Polecenia w Emacsie wydaje się używając głównie klawiszy Control
(etykietowanego Ctrl
) oraz Meta
(częściowo jego rolę
na klawiaturze PC pełni klawisz Alt
, najczęściej jednak
przyciska się przed właściwym klawiszem klaswisz Escape
).
Na starszych klawiaturach stacji Sun-SPARC klawisz Meta wyróżnia się kształtem karo, a jest umieszczony w pobliżu klawisza odstępu, nie jest to klawisz Alt. Na innych starszych klawiaturach stacji Sun występowały dwa klawisze pełniące funkcje klawisza Meta, oznaczono je Right i Left. W niektórych systemach Hewlett-Packard klawisz Meta występuje jako Extend Char. A na niektórych klawiaturach niewiadomego pochodzenia klawisz Meta jest oznaczany jako Meta.
Ctrl-q
(quoted-insert)
Wstawia do tekstu następujący po nim znak (klawisz) specjalny, zamiast wykonać jego funkcję.
Ctrl-x u
(Ctrl-_
)
Cofa ostatnie polecenie (,,undo'').
Ctrl-v
(view-next-screen)
Służy do przechodzenia do następnej strony (zwykle to samo można osiągnąć używając klawiszaPgDn
lubPage Down
na klawiaturze bocznej).
Meta-v
(PgUp
, PageUp
).
Do cofania się do poprzedniej strony służy polecenie
Ctrl-p
(previous-line, [strzałka w górę])Ctrl-b
(backward, [strzałka w lewo])Ctrl-f
(forward, [strzałka w prawo])Ctrl-n
(next-line, [strzałka w dół])
Służą do przesuwania kursora o jedną pozycję w odpowiednim kierunku.
Meta-f
(Ctrl-
[strzałka w prawo])
Przestawia kursor o jedno słowo do przodu.
Meta-b
(Ctrl-
[strzałka w lewo])
Przestawia kursor o jedno słowo do tyłu.
Ctrl-a
Powoduje przejście na początek wiersza
Ctrl-e
Powoduje przejście na koniec wiersza.
Powyższe polecenia (a także wiele innych) można poprzedzić argumentem,
podającym liczbe powtórzeń. Argument taki podaje się naciskając
Ctrl-u
, następnie wpisując liczbę powtórzeń i podając właściwe
polecenie, np. Ctrl-u 8 Ctrl-f
przesuwa kursor o osiem znaków do
przodu. Jeśli po Ctrl-u
nie podamy żadnej liczby, to wartością
domyślną jest 4.
Ctrl-g
Powoduje porzucenie przetwarzania bieżącego polecenia.
Ctrl-d
(a także klawisz [Delete]
lub [Del]
)
Usuwa bieżący znak.
Przy większych operacjach usuwania Emacs pamięta usuwane znaki.
Ctrl-K
(kill) usuwa wszystkie znaki od bieżącego do końca
linii, zapamiętując usunięty materiał w specjalnym buforze cyklicznym
(jeśli linia jest pusta, to usuwa znak końca linii). Kilka takich poleceń
wydanych bezpośrednio po sobie zachowuje usunięty materiał jako pojedynczą
jednostkę.
Aby wstawić ostatnio usunięty materiał z bufora w bieżącej pozycji kursora
należy użyć polecenia Ctrl-y
(yank). Polecenie
Meta-y
użyte natychmiast po nim powoduje zastępowanie go
wcześniejszym materiałem.
Ctrl-x Ctrl-f
Pobiera nazwę pliku i otwiera bufor z jego
zawartością. Do zachowania bieżacego bufora w jego pliku służy polecenie
Ctrl-X Ctrl-S
.
Meta-x find-file-literally
Otwierając bufor nie dokonuje konwersji formatu, kodów znaków ani automatycznej dekompresji
Ctrl-x i
Wstawia podany plik w bieżące miejsce w buforze i czyni go regionem.
Meta-x write-region
wypisuje region do podanego pliku
Meta-x append-to-file
dołącza region na koniec podanego pliku.
Meta-Ctrl-s
Przeszukiwanie przy użyciu wyrażeń regularnych.
Meta-Ctrl-%
(query-replace-regexp)
Zamiana (zastępowanie) napisów określonych przez wyrażenia regularne.
Ctrl-x r k
Usuwa prostokąt do kill ringu
Ctrl-x r d
Usuwa prostokąt na zawsze.
Ctrl-x r c
Wypełnia prostokąt spacjami (clear).
Ctrl-x r o
Wypełnia prostokąt spacjami, przesuwając resztę w prawo.
Ctrl-x r y
Wstawia prostokąt z kill bufora.
Meta-x recover-session
podobno przywraca po awarii sesję
Emacsa.
Ctrl-l
Wyświetla na nowo zawartość bufora, umieszczając bieżącą linię w środku bieżącego okna. Przydaje się też ono czasem do odświeżenia zawartości okna.Z opcją 0 (czyli
Ctrl-u 0 Ctrl-l
) przenosi bieżącą linię do góry okna.
Ctrl-t
(transpose)
Zamienia miejscami poprzedni znak z bieżącym.
Meta-t
Zamienia miejscami słowa otaczające kursor
Ctrl-x Ctrl-t
Przestawia wiersz zawierający kursor i poprzedni wiersz. Argument podaje, z iloma liniami do przodu.
Ctrl-j
(newline-and-indent)
Wstawia znak nowej linii, po czym wcina nową linię używając spacji.
Meta-^
(delete-indentation)
Dołącza bieżącą linię do poprzedniej, usuwając jednocześnie spacje z początkowego wcięcia.
Ctrl-x Ctrl-i
(Ctrl-x Tab
)
Zwiększ wcięcie regionu (o podany argument).
Aby usunąć znaki tabulacji (w żargonie edytora mówi się untabify)
trzeba użyć polecenia Meta-X untabify
.
Trzy polecenia służą do zamiany pocztu liter. Meta-c
zmienia bieżącą małą literę na dużą, zaś wszystkie kolejne litery w słowie
na małe. Meta-u
zmienia na duże wszystkie litery w słowie
poczynając od bieżącej, zaś Meta-l
na małe litery.
Polecenie Ctrl-@
ustawia znacznik w bieżącym położeniu kursora.
Obszar między znacznikiem a aktualnym położeniem kursora nazywa się
regionem i wiele pleceń odnosi się właśnie do niego.
Region można usunąć poleceniem Ctrl-W
, natomiast polecenie
Meta-W
powoduje skopiowanie regionu do bufora usuwania, nie usuwając
go jednak. Kopię z bufora można teraz wstawić w inne miejsce poleceniem
Ctrl-Y
.
Zaznaczony fragment tekstu może zostać wcięty poprzez wykonanie
polecenia Meta-C\
.
Można cały zaznaczony fragment zamienić na wielkie
(Ctrl-X Ctrl-U
) lub małe (Ctrl-X Ctrl-L
) litery.
Polecenie Meta-;
(indent-for-comment) służy do formatowania
komentarzy. Jeśli bieżący wiersz nie zawiera komentarza, kursor jest
przenoszony do kolumny komentarza (z ewentualnym wstawianiem spacji)
i zapisuje się tam znak średnika. Jeśli wiersz zawiera już komentarz,
jest on ewentualnie wcinany spacjami do właściwego położenia, zaś kursor
ustawiany za jego średnikiem.
Ctrl-H i
(Meta-X info
)
Uruchamia okno z trybem info.
Meta-x emacs-version
podaje numer wersji.
Ctrl-X Ctrl-Q
zmienia status bufora z read-only na read-write i odwrotnie.
Meta-o Meta-s
centruje bieżącą linię.
Meta-o Meta-S
centruje bieżący akapit.
Meta-q
Formatuje (wyrównuje) bieżący akapit.
Ctrl-X 2
(split-window-vertically)
Dzieli ramkę edycji na dwa okna o tej samej zawartości. Górne okno staje się oknem bieżącym.
Ctrl-X 4 c
tworzy i wyświetla bufor pośredni --- kopię bieżącego bufora.
Meta-x rename-uniquely
Zmienia nazwę bieżącego bufora dodając do niej liczbę. Przydaje się, by mieć kilka buforów typu shell: zmienić nazwę bieżącego na*Shell1*
, po czym wykonaćMeta-x shell
. Podobnie dla buforów poczty, kompilacji itp.
Z każdą ramką są związane jej własności. Zmiany własności dla ramek dokonuje się wyrażeniami
(add-to-list 'default-frame-alist '(font . "10x20")) (add-to-list 'default-frame-alist '(background-color . "blue"))
Polecenie Meta-X speedbar
tworzy dla bieżącej ramki dodatkową ramkę
nawigacyjną. W ramce tej pokazane są pliki z wybranego katalogu, początkowo
bieżącego. Na [+]
należy klikać drugim
przyciskiem myszy.
Jeśli istnieje plik TAGS, to klikając na plik powinniśmy zobaczyć jego tagi --- definiowane w nim symbole.
Ctrl-h m
(Meta-X describe-mode
)
Opisuje podany tryb edycji.Aby tekst był wyrównywany trzeba skorzystać z polecenia
Meta-x automatic-fill-mode
.
Polecenie Meta-Ctrl-A
(beginning-of-defun,
beginning-of-definition) przestawia kursor na początek bieżącej
definicji funkcji Lispu.
Polecenie Meta-Ctrl-E
(end-of-defun, end-of-definition)
przenosi kursor na koniec bieżącej definicji funkcji Lispu.
M-x run-lisp
Uruchamia interpreter Lispu, input i output będą w buforze *lisp*. Zmiennainferior-lisp-program
podaje nazwę programu. Podobnie działarun-scheme
.
Kodowanie można podać w nagłówku pisząc np.
Specjalne systemy kodowania: n-conversion, raw-text, emacs-mule.
Korekty:
Aby używać przetwarzania klient-serwer trzeba po pierwsze wykonać w oknie
Emacsa mającego być serwerem
Zwykle listę plików generujemy dynamicznie, np.
Obliczenia przeprowadza się zwykle w buforze W buforach Emacs Lispu ( Niektóre operacje w Emacsie wywołują jedną lub więcej funkcję-wtyczkę
(hook). Wtyczka to zmienna ustawiana przez użytkownika, której
wartością jest funkcja wtyczki. Pozwala to dopasowywać zachowanie Emacsa,
, np. mapę klawiatury dla wybranego trybu. Wtyczki zwykle ustawiamy w pliku
Wyrażenie Edytor emacs dostarcza dwóch sposobów sprawdzania poprawności zapisu, jeden
z nich korzysta z polecenia Inna metoda polega na skorzystaniu z polecenia Polecenie Polecenie Plik TAGS tworzymy poleceniem shella
Przykład użycia
Polecenia Emacsa:
Zmienną Aby usunąć błędy w pliku inicjalnym należy wywołać edytor z pominięciem
wczytywania tego pliku:
Ctrl-h L
Ctrl-h Ctrl-l
Opisuje środowisko językowe.
Meta-x set-language-environment
Ustawia skrypt środowiska; można to też zrobić opcją
current-language-environment
albo umieszczając w pliku
.emacs
:
(set-language-environment "UTF-8")
Meta-x list-input-methods
Podaje wszystkie metody wprowadzania.
-*- coding:latin-2; -*-
Meta-x list-coding-systems
Podaje wszystkie systemy kodowania.
Ctrl-h C
[
Opisuje system kodowania.
Ctrl-X
Użyj tego kodowania dla aktualnego bufora.
Ctrl-X
Użyj tego kodowania dla klawiatury.
Ctrl-X
Użyj tego kodowania dla wyjścia na terminal.
Znaki:
Ctrl-X =
Podaje informacje o bieżącym znaku, zwłaszcza jego kod.
Ctrl-U Ctrl-X =
Podaje rozszerzone informacje o bieżącym znaku.
Client-Server
M-x server-start
a następnie wyołąć, na przykład w shellu, klienta Emacsa
emacsclient plik ...
grep -l wzorzec `find -name "*.vala"` | xargs emacsclient
po czym w oknie serwera używamy Ctrl-X #
do przechodzenia do
następnego pliku (pamiętajmy o zachowaniu ewentualnych zmian).
Emacs Lisp
*scratch*
, podając
wyrazenie do obliczenia i naciskając Ctrl-J. Wyrażenia do obliczenia
w trakcie inicjowania edytora umieszcza się w pliku ~/.emacs
.
emacs-lisp-mode
):
Ctrl-x Ctrl-e
Oblicza ostatnie wyrażenie przed kursorem, wynik w Echo Area.
Ctrl-Meta-x
Oblicza wyrażenie
defun
w okolicy kursora, także
defvar
.
Meta-x eval-region
Oblicza region
Meta-x eval-current-buffer
Oblicza cały bieżący bufor.
Meta-:
Czyta wyrażenie z minibufora i oblicza.
Zmienne
load-path
lista katalogów, z których są ładowane pliki, gdy nie podano pełnej nazwy.
Jej wartość można zmieniać, np.
(setq load-path (cons "/home/nowy/katalog" load-path))
default-directory
podaje bieżący katalog.
~/.emacs
file.
(describe-variable nazwa)
podaje
dokumentację zmiennej.
Funkcje
(load "nazwa")
ładuje podany plik. Szuka używając
rozszerzeń .el, .elc i bez rozszerzenia. Zmiennaload-path
podaje gdzie szukać.
(load-file "nazwa")
ładuje podany plik.
(load-library "nazwa")
ładuje podany plik.
Korekta ortograficzna
spell
, drugi nie. Aby sprawdzić
poprawność zapisu danego słowa należy wprowadzić kombinację Meta-$
,
która inicjalizuje polecenie spell. Polecenie to sprawdza zgodność pisowni
słowa wskazywanego przez kursor i jeśli wyraz jest zapisany niezgodnie z
wersją w słowniku, użytkownik jest proszony o wprowadzenie poprawnej
wersji.
ispell
,
które jest dostarczane z edytorem emacs. Nie jest ono jednak instalowane
automatycznie i jego działanie zależy od konfiguracji.
Programowanie
Meta-x compile
uruchamia make
w bieżącym
katalogu, przechwytując wyniki. Tak naprawdę zwykle pyta o polecenie
(shella) i wykonuje je, więc można wywoływać inne rzeczy. Wyniki w
buforze *compilation*
. Działa w tle.
Ctrl-x `
próbuje analizować komunikaty o błędach
i otwierać okna z plikami.
Ctrl-x 4 a
dodaje nowe entry do ChangeLog.
Tagi
etags plik ...
Opcje
--language=
nazwa auto none
--include=
inny tagfile
find . -name "*.[chCH]" -print etags -
Meta-x visit-tags-table
Wybiera bieżące, domyślnie
TAGS
Meta-. [tag>]
Znajduje definicję tag>, domyślnie bieżącego.
Ctrl-u Meta-.
Znajduje następną definicję.
Ctrl-x 4 .
To samo, ale w osobnym oknie.
Ctrl-x 5 .
To samo, ale w osobnej ramce.
Meta-x list-tags
Podaje wszystkie zdefiniowane w tym pliku.
Debugger
debug-on-error
ustawia się na t
przy
usuwaniu błędów.
emacs -q
po czym obliczamy następujące wyrażenia
(setq debug-on-error t)
(load "~/.emacs")
Programy
Porównywanie
Ctrl-u Meta-x compare-windows
ignoruje różnice w whitespaces.
Meta-x diff
Porównuje pliki, otwierając bufor
*diff*
(ma tryb Compilation
). Następnie Ctrl-X '
(albo backquote)
wizytuje kolejne różnice w plikach, zaś Ctrl-c Ctrl-c
idzie do
plików źródłowych.
Meta-x diff-backup
porównuje plik z ostatnim backupem.
Meta-x diff-mode
włącza tryb
diff
do oglądania patchy. [??? Co to jest Ediff ???]
Poczta
Meta-X rmail
lub Meta-X mail
wywołuje mail-reader.
Meta-X gnus
wywołuje news reader.
Drukowanie
Plik ipp.el
zawiera implementację
Internet Printing Protocol.
IPP, zdefiniowany przez Printer Working Group (\url{http://www.pwg.org/},
ma być następcą protokołu LPD do komunikacji z drukarkami sieciowymi.
Plik ten to częściowa implementacja klienta protokołu, wystarczająca
do wysłania zadania do drukarki, odpytywania drukarki oraz do oglądania
kolejki wydruku. [Version 0.5 2001-04-25, under GNU GPL.]