Vortrag im Rahmen der Grazer Linux Tage 2003
Stefan Thalauer <emacs@thalauer.net>
Emacs Grundlagen, Dateien editieren, Such- und Ersetzoperationen, Buffer und Fenster, Emacs als Arbeitsumgebung, Emails und Usenet News (Gnus), Texte erstellen (HTML/XML, LaTeX), Macros schreiben, Konfiguration des Emacs, Emacs für Programmierer (C und C++, Java).
Um die Präsentation zu starten bitte F11 drücken. (Für Benutzer des Internetbrowsers Opera)
Weitere Informationen zu den Grazer Linux Tagen sind unter http://www.linuxtage.at zu finden.
Diese Einführung bezieht sich auf den GNU Emacs (Version 21.x)
"Emacs is the extensible, customizable, self-documenting real-time display editor."
Eine erste Version wurde 1975 von Richard Stallman geschrieben
Emacs steht für:
Modifier | Taste | |
---|---|---|
CONTROL | C | STRG |
META | M | ALT (ESC) |
SHIFT | S | Umschalt |
(none> | DEL | BACKSPACE. |
ESC x ist gleichbedeutend zu M-x.
Um den Emacs zu starten:
thalze@glt03:~> emacs
Beim Starten kann die zu editierende Datei angegeben werden:
thalze@glt03:~> emacs <file>
Um den Emacs ohne X-Unterstützung zu starten:
thalze@glt03:~> emacs -nw
Mode | Funktion |
---|---|
Fundamental Mode | Default Mode; keine spezielle Funktionalität |
Text Mode | Um Texte zu schreiben. |
Message Mode | Um Mails und Usenetbeiträge zu schreiben . |
HTML Mode | Um HTML Dokumente zu schreiben. |
XML Mode | Um XML Dokumente zu schreiben. |
LaTeX Mode | Um LaTeX Dokumente zu schreiben. |
C mode | Um C Programme zu schreiben. |
C++ mode | Um C++ Programme zu schreiben. |
Mode | Funktion |
---|---|
Auto-fill mode | Automatischer Umbruch |
Overwrite mode | Überschreiben |
Auto-save mode | Automatisches Speichern in bestimmten Intervallen. |
Line number mode | Anzeige der aktuellen Zeilennummer |
Transient mark Mode | Highlighting von Regionen |
Abbrev mode | Um Abkürzungen zu verwenden. |
Flyspell mode | Automatische Rechtschreibprüfung |
Tastendrücke | Befehl | Wirkung |
---|---|---|
C-x C-f | find-file | Datei in einem Buffer laden. |
C-x C-v | find-alternative-file | Alternative Datei in Buffer laden. |
C-x C-i | insert-file | Datei in Buffer einfügen. |
C-x C-s | save-buffer | Datei speichern. |
C-x C-w | write-file | Buffer unter anderem Namen speichern. |
C-x C-c | save-buffers-kill-emacs | Emacs beenden. |
Es gibt verschiedenste Möglichkeiten in Dateien zu navigieren.
Navigation am besten im Tutorial (C-h t) üben!
Tastendrücke | Befehl | Wirkung |
---|---|---|
C-f | forward-char | Gehe ein Zeichen weiter (rechts). |
C-b | backward-char | Gehe ein Zeichen zurück (links). |
C-p | previous-line | Gehe in vorige Zeile (hinauf). |
C-n | next-line | Gehe in nächste Zeile (hinunter). |
M-f | forward-word | Gehe ein Wort weiter. |
M-b | backward-word | Gehe ein Wort zurück. |
C-a | beginning-of-line | Gehe zum Anfang dieser Zeile. |
C-e | end-of-line | Gehe zum Ende dieser Zeile. |
M-e | forward-sentence | Gehe einen Satz zurück. |
M-a | backward-sentence | Gehe einen Satz weiter. |
Tastendrücke | Befehl | Wirkung |
---|---|---|
M-} | forward-paragraph | Gehe einen Paragraphen weiter. |
M-{ | backward-paragraph | Gehe einen Paragraphen zurück. |
C-v | scroll-up | Gehe eine Bildschirmseite weiter. |
M-v | scroll-down | Gehe eine Bildschirmseite zurück. |
M-< | beginning-of-buffer | Gehe zum Anfang der Datei. |
M-> | end-of-buffer | Gehe zum Ende der Datei. |
(none) | goto-line | Gehe zu Zeile n. |
C-l | recenter | Aktuelle Zeile in die Mitte. |
M-n | digit-agrument | Wiederhole den nächsten Befehl n-mal |
C-u n | universal-argument | Wiederhole den nächsten Befehl n-mal (4-mal wenn kein n angegeben). |
Tastendrücke | Befehl | Wirkung |
---|---|---|
C-d | delete-char | Lösche Zeichen unter dem Cursor. |
DEL (Backspace) | delete-backward-char | Lösche voriges Zeichen. |
M-d | kill-word | Lösche nächstes Wort. |
M-DEL | backward-kill-wort | Lösche voriges Wort. |
C-k | kill-line | Lösche Zeile ab Cursor |
M-k | kill-sentence | Lösche nächsten Satz. |
C-x DEL | end-of-buffer | Lösche vorigen Satz.. |
C-y | yank | Füge das letzte Gelöschte ein. |
C-w | kill-region | Lösche markierten Text. |
Tastendrücke | Befehl | Wirkung |
---|---|---|
M-q | fill-paragraph | Paragraph neu formatieren. |
(none) | fill-region | Region neu formatieren. |
C-x h | mark-whole-buffer | Ganze Datei markieren. |
Tastendrücke | Befehl | Wirkung |
---|---|---|
C-x r s | copy-to-register | Kopiert Region in Register. |
C-x r i | insert-register | Fügt den Inhalt des Registers ein. |
C-x r SPACE | point-to-register | Speichert aktuelle Position in Register. |
C-x r j | jump-to-register | Gehe zu im Register gespeicherter Position. |
Tastendrücke | Befehl | Wirkung |
---|---|---|
C-t | transpose-chars | Vertauscht zwei Zeichen. |
M-t | transpose-words | Vertauscht zwei Wörter. |
C-x C-t | transpose-lines | Vertauscht zwei Zeilen. |
(none) | transpose-sentences | Vertauscht zwei Sätze. |
(none) | transpose-paragraphs | Vertauscht zwei Paragraphen. |
Tastendrücke | Befehl | Wirkung |
---|---|---|
M-c | capitalize-word | Erster Buchstabe großgeschrieben. |
M-u | upcase-word | Großgeschriebenes Wort. |
M-l | downcase-word | Kleingeschriebenes Wort. |
Tastendrücke | Befehl | Wirkung |
---|---|---|
C-s | isearch-forward | Inkrementelle Vorwärtssuche |
C-r | isearch-backward | Inkrementelle Rückwärtssuche. |
RETURN | (none) | Suche beenden. |
C-g | keyboard-quit | Suche abbrechen. |
DEL | (none) | Lösche Zeichen des Suchwortes. |
C-s C-w | (none) | Suche mit dem Wort unter dem Cursor. |
C-s C-y | (none) | Suche mit Text von Cursor Position bis zum Ende der Zeile. |
C-s M-y | (none) | Suche mit Text aus dem "kill ring". |
C-s C-s | (none) | Letzte Suche wiederholen. |
Tastendrücke | Wirkung |
---|---|
C-s RETURN searchstring RETURN |
Simple Suche Vorwärts |
C-r RETURN searchstring RETURN |
Simple Suche Rückwärts |
Tastendrücke | Befehl | Wirkung |
---|---|---|
C-s RETURN C-w | word-search-forward | Wort Suche Vorwärts |
C-r RETURN C-w | word-search-backward | Wort Suche Rückwärts |
Tastendrücke | Wirkung |
---|---|
M-% | Start query replace |
SPACE oder y | Ersetzen und weitergehen. |
DEL oder n | Nicht ersetzen und weitergehen. |
. | Ersetzen und beenden. |
, | Ersetzen und nicht weitergehen. |
! | Weiteres ersetzen ohne Nachfragen. |
RETURN oder q | Query-replace beenden. |
? | Hilfe. |
Tastendrücke | Befehl | Wirkung |
---|---|---|
C-x ESC ESC | repeat-complex-command | Komplexe Operation wiederholen |
Komplexe Operationen wiederholen funktioniert nicht nur bei Query-replace!
Tastendrücke | Wirkung |
---|---|
C-r | Rekursives Editieren beginnen. |
C-w | Wort löschen und rekursives Editieren beginnen. |
M-C-c | Rekursives Editieren beenden und weiter "query-replace". |
C-] | Rekursives Editieren und "query-replace" beenden. |
(setq-default case-fold-search nil) ;; *Non-nil if searches and matches should ignore case. (setq-default case-replace nil) ;; *Non-nil means `query-replace' should ;; preserve case in replacements.
Manchmal normale Suche nicht ausreichend.
Dann Suche mit Regulären Ausdrücken.
Zeichen | Übereinstimmung |
---|---|
^ | Anfang einer Zeile. |
$ | Ende einer Zeile |
. | Ein einzelnes Zeichen (wie ?) |
.* | Null oder mehr Zeichen (wie * , Wildcard) |
\< | Beginn eines Wortes |
\> | Ende eines Wortes |
[] | Zeichen zwischen den Klammern. (z.B.: [a-z] ) |
\ | Escape-Character (z.B.: \. für Punkt) |
Tastendrücke | Befehl | Wirkung |
---|---|---|
M-C-s RETURN | re-search-forward | Suche vorwärts nach Regulärem Ausdruck. |
M-C-r RETURN | re-search-backward | Suche rückwärts nach Regulärem Ausdruck. |
M-C-s | isearch-forward-regexp | Suche inkrementell rückwärts nach Regulärem Ausdruck. |
M-C-r | isearch-backward-regexp | Suche inkrementell rückwärts nach Regulärem Ausdruck. |
(none) | query-replace-regexp | Suche ersetze einen Regulären Ausdruck. |
Es ist möglich zu prüfen:
Um einen Buffer zu überprüfen: M-x ispell-buffer RETURN
Wenn alle Worte korrekt: Spell-checking done
Tastendrücke | Befehl | Wirkung |
---|---|---|
M-$ | ispell-word | Das Wort unter dem Cursor überprüfen. |
(none) | ispell-region | Alle Wörter der Region überprüfen. |
(none) | ispell-buffer | Alle Wörter im Buffer überprüfen. |
C-u M-$ | ispell-continue | Ispell fortsetzen. |
M-TAB | ispell-complete-word | Im Text mode: mögliche Vervollständigungen des aktuellen Wortes zeigen. |
(setq ispell-dictionary "english")
Um den Flyspell Mode allgemein für einen Mode zu Aktivieren:
(z.B.: LateX Mode)
(add-hook 'LaTeX-mode-hook 'flyspell-mode)
(setq-default abbrev-mode t) (read-abbrev-file "~/.abbrev_defs") (setq save-abbrevs t) (setq flyspell-abbrev-p nil)
Tastendrücke | Befehl | Wirkung |
---|---|---|
(none) | abbrev-mode | Word abbreviation mode starten (beenden). |
C-x a - oder C-x a i g |
inverse-add-global-abbrev | Nach Abbreviation globale Definition. |
C-x a g | add-global-abbrev | Nach Wort globale Abbreviation. |
C-x a i l | inverse-add-local-abbrev | Nach Abbreviation lokale Definition. |
C-x a l | add-mode-abbrev | Nach Wort lokale Abbreviation. |
(none) | unexpand-abbrev | Letze abbreviation rückgängig machen. |
(none) | write-abbrev-file | Abbreviations speichern. |
(none) | edit-abbrevs | Abbreviations bearbeiten. |
(none) | list-abbrevs | Abbreviations anzeigen. |
(none) | kill-all-abbrevs | Abbreviations löschen. |
Ein Buffer wird in einem Fenster dargestellt
Dies ist die Emacs Definition eines Fensters! GUI Fenster (X, MS Windows) werden hier als Frames bezeichnet!
Um zwischen Buffern hin- und herzuschalten: C-x b gefolgt vom Buffer Name.
C-x b gefolgt von | Wirkung |
---|---|
Neuer Buffer Name | Neuer Buffer wird erzeugt. |
Name eines existierenden Buffer | Buffer wird aktiv. |
Mit C-x k (kill-buffer) kann ein Buffer gelöscht werden.
Tastendrücke | Befehl | Wirkung |
---|---|---|
C-x 2 | split-window-vertically | Teile aktuelles Fenster in zwei übereinander liegende. |
C-x 3 | split-window-horizontally | Teile aktuelles Fenster in zwei nebeneinander liegende. |
C-x o | other-window | Gehe zum anderen Fenster. |
C-x 0 | delete-window | Lösche das Aktuelle Fenster. |
C-x 1 | delete-other-window | Lösche alle anderen Fenster. |
C-x 4 f | find-file-other-window | Öffne Datei in anderem Fenster. |
C-x 4 b | switch-to-buffer-other-window | Wechsle zu Buffer in anderem Fenster. |
Um die Liste aller Buffer zu erhalten: C-x C-b
Tastendrücke | Wirkung | Passiert |
---|---|---|
C-n | Gehe zum nächsten Buffer (eine Zeile hinunter). | Sofort |
SPACE | Gehe zum nächsten Buffer. | Sofort |
C-p | Gehe zum vorhergehendem Buffer (eine Zeile hinauf) | Sofort |
d | Markiere Buffer als gelöscht. | Nachdem x gedrückt wurde |
s | Markiere Buffer als gespeichert. | Nachdem x gedrückt wurde |
u | Hebe Markierung auf. | Sofort |
x | Führe Befehle (d,s,x) aus. | Sofort |
1 | Zeige Buffer in einem Fenster an. | Sofort |
2 | Zeige Buffer im nächsten Fenster an. | Sofort |
Mit Bookmarks ist es möglich sich Positionen in verschiedenen Dateien zu merken
Tastendrücke | Befehl | Wirkung |
---|---|---|
C-x r m | bookmark-set | Setzt ein Lesezeichen an der aktuellen Position. |
C-x r b | bookmark-jump | Springt zu einem Lesezeichen. |
(none) | bookmark-rename | Umbenennt ein Lesezeichen. |
(none) | bookmark-delete | Löscht ein Lesezeichen. |
(none) | bookmark-save | Speichert die Lesezeichen in die Default Datei. |
C-x r l | bookmark-menu-list | Öffnet den *Bookmark List* buffer. |
Es können Shell-Befehle (z.B: grep ) auf eine Datei angewandt werden: !
Tastendrücke | Wirkung |
---|---|
v | Datei ansehen (schreibgeschützt). |
RETURN | Öffne Datei zum Editieren |
Tastendrücke | Wirkung | Passiert |
---|---|---|
d | Markiere Datei als gelöscht. | Nachdem x gedrückt wurde |
D | Lösche Datei | Nach Dialog |
u | Hebe Markierung auf. | Sofort |
x | Führe Befehle (d) aus. | Sofort |
C | Kopiere Datei. | Nach Dialog |
R | Datei umbennen. | Nach Dialog |
Um das Fensterverhalten zu verändern:
(setq Man-notify-method 'pushy)
Um Mails und News zu lesen und zu schreiben:
M-x gnus
Eine Vorstellung des Gnus gibt es vielleicht bei den nächsten Grazer Linux Tagen :-) oder durch:
C-h i RETURN Gnus RETURN
Tastendrücke | Befehl | Wirkung |
---|---|---|
C-x r k | kill-rectangle | Löscht Rechteck und speichert es. |
C-x r d | delete-rectangle | Löscht Rechteck und speichert es nicht. |
C-x r y | yank-rectangle | Fügt das letzt gelöschte Rechteck wieder ein. |
C-x r c | clear-rectangle | Überschreibt Rechteck mit Leerzeichen und speichert es nicht. |
C-x r t | string-rectangle | Fügt Zeichen in jeder Zeile des Rechteckes ein. |
C-x r o | open-rectangle | Fügt ein leeres Rechteck ein. |
Keyboard Macros sind aufgezeichnete Befehlsabfogen.
Können wiederholt ausgeführt werden.
C-x ( C-e C-f RETURN C-f C-x )
Tastendrücke | Befehl | Wirkung |
---|---|---|
C-x ( | start-kbd-macro | Startet Macro Aufzeichnung |
C-x ) | end-kbd-macro | Beendet Macro Aufzeichnung |
C-x e | call-last-kbd-macro | Führt letztes Macro aus |
M-n C-x e | digit-argument and call last-kbd-macro | Führt letztes Macro n-mal aus |
(none) | name-last-kbd-macro | Gibt dem letztem Macro einen Namen |
(none) | insert-kbd-macro | Fügt Macro in eine Datei ein |
(none) | load-file | Lädt eine Datei mit Funktionsdfinitionen |
C-x C-k | edit-kbd-macro | Editieren eines Macros |
(global-set-key "\C-xl" 'goto-line) (add-hook 'c-mode-hook (lambda () (local-set-key "\C-cc" 'compile))
(setq auto-save-interval 800)
Tastendrücke | Befehl | Wirkung |
---|---|---|
C-h ? | help-for-help | verfügbare Hilfe-Optionen |
C-h t | help-with-tutorial | Emacs Tutorial |
C-h i | info | Startet Info-System |
C-h c | describe-key-briefly | Kurzbeschreibung des Tastenkürzels |
C-h k | describe-key | Welcher Befehl ist auf diesem Tastenkürzel |
C-h w | where-is | Welches Tastenkürzel für diesen Befehl |
C-h m | describe-mode | Informationen über den aktuellen Mode |
C-h b | describe-bindings | Wie sind die Tastenkürzel für diesen Mode? |
Um die Präsentation zu beenden bitte F11 drücken.