Emacs
Inhaltsverzeichnis
Vorbemerkungen
Der EMACS ist unter Linux (einer) der wichtigste(n) Editor(en). Für
Neulinge ist er nicht unbedingt auf Anhieb problemlos bedienbar. Dies
liegt vor allem daran, dass er im Gegensatz zu bekannten
Computerprogrammen andere Konzepte verfolgt, und im Zusammenhang mit
EMACS ungewohnte Begriffe für an sich Bekanntes verwendet werden (siehe
Kapitel Grundwissen). Außerdem werden für die meisten Aktionen auch
andere Shortcuts verwendet (dazu später mehr). Ein wichtiger Punkt
ist, dass der EMACS sehr stark auf die Bedienung mit der Tastatur
ausgelegt ist. Er lässt sich zwar auch mit der Maus bedienen, verliert
aber dadurch einen seiner Vorteile. Deshalb ist es auf jeden Fall
notwendig, eine kurze Einleitung zu lesen.
Vorteile von EMACS:
- spezifische Unterstützung verschiedener Dateiformate (z.B. durch formatabhängige Menüs, Highlighting)
- gute Bedienbarkeit durch Shortcuts (schnell!)
- Textmodus (arbeiten über ssh)
- Matlab-, C/C++-, LaTeX-, Fortran, mail-, Browser-, html-, java-Umgebung
Je nachdem in welcher Sprache programmiert wird, ändern sich die zur
Verfügung stehenden Shortcuts, die Menüzuteilung und eventuell auch die
Icons in der Symbolleiste (z.B. News lesen mit gnus).
Im Rahmen dieser Einführung werden nur die wichtigsten Funktionen
vorgestellt. Wer an den weiteren Funktionen interessiert ist, wird
auf das EMACS manual verwiesen.
Starten von EMACS
Gestartet wird EMACS mit Hilfe des entsprechenden Menüeintrags oder durch Eingabe des Shellbefehls
$ emacs
Soll der Editor im Textmodus (also ohne graphische Oberfläche) verwendet werden, ist
$ emacs -nw
einzugeben.
Grundwissen
Hier werden die wichtigsten Aspekte im Umgang mit EMACS erklärt. Außerdem werden die wichtigsten Tastenkombinationen vorgestellt. Eine etwas größere Liste ist am Ende des Dokuments zu finden.
Ein Tutorial
Hier wird Schritt für Schritt erklärt, wie emacs bedient wird:
Basic Emacs Editing
Noch ein Tutorial auch auf C und Latex bezogen:
The Emacs editor
Syntax bei Tastenkombinationen
Bei der Beschreibung von Tastenkombinationen werden folgende Abkürzungen verwendet:
- C-x: Control-Key (Strg oder Ctrl) gleichzeitig gedrückt mit einer weiteren Taste (hier x).
- C-x s: Control-Key gleichzeitig gedrückt mit einer weiteren Taste (hier x); Nach dem Loslassen drücken einer weiteren Taste (hier s).
- M-x: Meta-Key (Alt) gleichzeitig gedrückt mit einer weiteren Taste.
- C-M-x: Control- und Meta-Key gleichzeitig gedrückt mit einer weiteren Taste.
- ESC: Escape-Key (Esc) gleichzeitig gedrückt mit einer weiteren Taste.
- RET: Return- oder Eingabetaste.
- SPC: Space oder Leerzeichen.
- TAB: Tabulator.
- DEL: Delete- oder Entfern-Taste.
- BSP: Backspace- oder Lösch-Taste.
Markieren
Tastenkombinationen:
Aktion | Shortcut |
Eine Marke setzen1 | C-SPC |
Paragraph markieren2 | M-h |
Gesamten Buffer markieren | C-x h |
1 Um einen Bereich zu markieren wird mit der
Tastenkombination C-SPC eine Marke gesetzt und mit den Cursortasten
der gewünschte Bereich markiert. Mit Hilfe der Maus ist das Markieren
eines Bereiches auf gewohnte Weise möglich.
2 Ein Paragraph endet und beginnt in der Regel mit einer Leerzeile.
Kopieren, Ausschneiden, Einfügen und Löschen
Auch hier werden eigene Ausdrücke (und Shortcuts) verwendet. Folgende Tabelle gibt eine Übersicht:
Aktion | Bezeichnung | Shortcut |
kopieren | copy | M-w |
ausschneiden | kill | C-w |
einfügen | yank | C-y |
Maustastenbelegung
Im EMACS ist oft die mittlere Maustaste (Mouse-2) anstatt, wie erwartet,
die linke zu verwenden.
Beispiel: Öffnen einer Datei
Wird die Tastenkombination C-x C-f RET eingegeben, so wird das
Home-Verzeichnis des Benutzers angezeigt. Will man hier in ein
Verzeichnis wechseln, ist das gewünschte Verzeichnis mit der mittleren
Maustaste anzuklicken. Danach öffnet sich ein neues Fenster, in dem der
Inhalt des Verzeichnisses angezeigt wird.
Automatischer Zeilenumbruch
Zeilen können im EMACS automatisch umgebrochen werden. Um dies zu aktivieren ist im Menü Options der Eintrag Word Wrap in Text Modes (Auto Fill) zu wählen. Oft ist nach dem Editieren eines Bereiches das neuerliche Umbrechen der Zeilen notwendig. Dies erreicht man, indem man diesen Bereich markiert und durch Drücken von M-x den Minibuffer aktiviert (siehe auch entsprechendes Kapitel). In den Minibuffer wird dann fill-region eingegeben und mit RET bestätigt.
Buffer, Frame und Window
EMACS stellt für jede geöffnete Datei einen Buffer bereit, der den gesamten Inhalt dieser Datei beinhaltet. Außerdem können Buffer noch für andere Aufgaben verwendet werden:
- *scratch*: Ein Bereich für Notizen, die nicht automatisch zum Speichern vorgesehen sind.
- *messages*: Nachrichten von EMACS.
- andere: z.B. für die Ausgabe von Programmen, die aus EMACS aufgerufen werden.
Die Darstellung der Buffer erfolgt in sogenannten Frames (eigene Fenster am Bildschirm), die unter Umständen in mehrere Windows (Bereiche in einem Frame) aufgeteilt sein können. Der Inhalt eines Buffers kann nun in einem Window dargestellt werden, wobei der Inhalt eines Buffers auch in mehreren Windows vorhanden sein kann. Dies hat den Vorteil, dass man verschiedene Bereiche einer Datei mehr oder weniger gleichzeitig bearbeiten kann. Man kann damit z.B. recht einfach Teile vom Anfang einer langen Datei in einem weit entfernten Bereich einfügen.
Unter dem Window, in dem der Buffer dargestellt wird, liegt die Mode Line. In ihr wird Information zum geöffneten Buffer dargestellt. Mehr Information dazu ist unter [http://www.gnu.org/software/emacs/manual/html_node/Mode-Line.html#Mode%20Line hier] zu finden.
Der Minibuffer
Die letzte Zeile jedes Frames stellt den Minibuffer dar. Er erfüllt drei Aufgaben:
- Nach Betätigung eines Shortcuts oder dem Aufrufen einer Funktion werden hier eventuell notwendige Argumente abgefragt.
- Zum Beispiel wird hier nach Betätigung von C-x C-f (find file) der Dateiname abgefragt.
- Hier können Funktionen, die an keine Tastenkombination gebunden sind, aufgerufen werden. Dabei muss der Minibuffer zuerst durch Eingabe von M-x aktiviert werden. Der Minibuffer wartet nun auf die Angabe der gewünschten Funktion.
- Ausgabe von Meldungen an den Benutzer.
Auch im Minibuffer steht für fast alle Situationen eine
Komplettierungsfunktion zur Verfügung. Diese kann mit Hilfe der
[TAB]-Taste aufgerufen werden (damit werden eindeutige Zeichenfolgen
komplettiert). Zweimaliges schnelles Betätigen der [TAB]-Taste öffnet
ein Window, in dem alle Komplettierungsmöglichkeiten angezeigt werden. Die
[SPACE]-Taste dient zur Komplettierung von maximal einem Wort.
Begonnene Eingaben werden mit der Tastenkombination
C-g abgebrochen.
EMACS und Matlab
Am besten startet man den Editor mit Eingabe von edit am matlab-Prompt. Sollte hier nicht der EMACS geöffnet werden, bitte den Anweisungen unter Punkt 2 (Configure MATLAB to use EMACSLink) der Datei
/afs/itp.tugraz.at/opt/matlab/7/java/extern/EmacsLink/install.html
folgen. Der Matlabmodus wird automatisch geladen, wenn eine Datei mit
der Endung .m geöffnet wird. In diesem Modus existiert ein Menü MATLAB,
das die Sonderfunktionen dieses Modus zur Verfügung stellt. Daneben
existiert ein Menü mit dem Namen Mdb, das Funktionen zum Debuggen von
Matlab-Skripten enthält.
Anmerkungen:
- Zu beachten ist, dass das Ausführen von Skripten durch die Tastenkombination C-c C-s nur möglich ist, wenn sich Matlab im richtigen Verzeichnis befindet. (Wechselbar mit dem Befehl cd im Matlab command window oder im Fenster current directory).
- Die Verknüpfung mittels EMACS-Link funktioniert nicht, wenn Matlab mit der Kommandozeilenoption -nojvm gestartet wird. Soll Matlab in einem XTerm verwendet werden und auch EMACS-Link zur Verfügung stehen, ist die Kommandozeilenoption -nodesktop zu verwenden.
Syntax-Highlighting
Um Syntax-Highlighting für Matlab in EMACS zu aktivieren sollte man den Anweisungen in der Datei
Matlab-Installationsverzeichnis/java/extern/EmacsLink/install.html
folgen. Um ein erweitertes Syntax-Highlighting zu aktivieren, die Datei
Matlab-Installationsverzeichnis/java/extern/EmacsLink/lisp/matlab.el
durch die Datei matlab.el aus matlab.zip ersetzen.
Sollten die nötigen Dateien für das Matlab-Highlighting nicht vorhanden sein kann man sie hier herunterladen. Dieses Archiv enthält die Dateien und Verzeichnisse, die unter
Matlab-Installationsverzeichnis/java/extern/EmacsLink/
zu finden sein sollen.
EMACS konfigurieren
Graphisch
Das Options Menü stellt die Schnittstelle zur "graphischen" Konfiguration von EMACS dar.Unter
Options -> Customize Emacs -> Browse Customization Groups
kann EMACS detailliert konfiguriert werden. Allerdings ist es hier nicht ganz leicht, die richtigen Einträge zu finden. Man kann anschließend Änderungen über den Knopf State speichern oder auch nur für die aktuelle Sitzung aktivieren. Wird die Einstellung gespeichert, so fügt EMACS in seiner Konfigurationsdatei
~/.emacs
einen Eintrag hinzu (~ steht wie üblich für das Home-Verzeichnis).
Konfigurationsdatei
EMACS kann auch durch direktes Ändern der Konfigurationsdatei
konfiguriert werden. Auch hier wird auf das
EMACS manual
verwiesen.
Tipps
Shortcuts definieren
Shortcuts können in der .emacs-Datei definiert werden. Folgendes Listing bindet die Tasten [f4] an die Funktion query-replace (interaktives Suchen und Ersetzen) und die Taste [f3] an dabbrev-expand (dynamisches Expandieren von Zeichenketten):
(global-set-key [f4] 'query-replace) (global-set-key [f3] 'dabbrev-expand)
Wichtige Funktionen
(...nach Meinung des Autors)
- query-replace
- tags-query-replace
- dabbrev-expand
- compile
- comment-region
- uncomment-region
Tabellen wichtiger Shortcuts
Files,Buffers und Windows
TASTE | BEDEUTUNG | TASTE | BEDEUTUNG | |
C-z | Suspend | C-x C-c | Beendet | |
C-x C-s | Speichert File | C-x s | Speichert alle Files | |
C-x C-w | Speichert File als | C-x C-v | Ersetzt File | |
C-x C-f | Öffnet File | C-x i | Einfügen eines Files | |
C-x b | Anderer Buffer | C-x k | Killt (entfernt) Buffer | |
C-x C-b | Liste aller Buffer |
Eine Eigenart von EMACS ist die Tatsache, dass man für das Öffnen eines neuen, nicht existierenden Files ebenfalls C-x C-f für das Anlegen verwendet. Man wird dann im Minibuffer zum Eingeben des Filenamens aufgefordert.
TASTE | BEDEUTUNG | TASTE | BEDEUTUNG | |
C-x 2 | Split Window | C-x 5 2 | Neuer Frame | |
C-x 0 | Entfernt Window | C-x 5 0 | Entfernt Frame | |
C-x 1 | Entfernt andere Windows | C-x 3 | Split Window seitlich | |
C-M-v | Scrollt anderes Fenster | C-x ^ | Macht Window größer | |
C-x { | Macht Window schmäler | C-x } | Macht Window breiter | |
C-x o | Cursor in anderes Window | C-x 5 o | Cursor in anderen Frame | |
C-x 4 b | Auswahl Buffer in anderem Window | C-x 5 b | Auswahl Buffer in anderem Frame | |
C-x 4 C-o | Buffer in anderem Window | C-x 5 C-o | Buffer in anderem Frame | |
C-x 4 f | Öffne File in anderem Window | C-x 5 f | Öffne File in anderem Frame |
TASTE | BEDEUTUNG | TASTE | BEDEUTUNG | |
C-b | Buchstabe rückwärts | C-f | Buchstabe vorwärts | |
M-b | Wort rückwärts | M-f | Wort vorwärts | |
C-p | Zeile rückwärts | C-n | Zeile vorwärts | |
C-a | Zeilenanfang | C-e | Zeilenende | |
M-a | Satz rückwärts | M-e | Satz vorwärts | |
M-{ | Paragraph rückwärts | M-} | Paragraph vorwärts | |
M-x [ | Seite rückwärts | M-e ] | Seite vorwärts | |
C-M-a | Funktion rückwärts | C-M-e | Funktion vorwärts | |
M-< | Bufferanfang | M-> | Bufferende | |
M-v | Scroll Schirm rückwärts | C-v | Scroll Schirm vorwärts | |
C-x < | Scroll Schirm links | C-x > | Scroll Schirm rechts | |
C-u C-l | Zeile in Schirmmitte |
Markieren, Kopieren und Löschen
TASTE | BEDEUTUNG | TASTE | BEDEUTUNG | |
C-SPC | Setze Markierung | C-x C-x | Tausche Markierung und Cursor | |
M-h | Markiere Paragraph | C-x C-p | Markiere Seite | |
C-M-h | Markiere Funktion | C-x h | Markiere Buffer | |
BSP | Entferne Zeichen rückwärts | DEL | Entferne Zeichen vorwärts | |
M-DEL | Lösche Wort rückwärts | M-d | Lösche Wort vorwärts | |
M-0 C-k | Lösche Zeile rückwärts | C-k | Lösche Zeile vorwärts | |
C-x DEL | Lösche Satz rückwärts | M-k | Lösche Satz vorwärts | |
C-w | Lösche Region | M-w | Kopiere Region | |
C-y | Einfügen | M-y | Tauscht letzte Einfügung gegen vorherige |
Als Region bezeichnet man dabei einen markierten Bereich. Diese kann sowohl mit Hilfe der Tastatur, als auch mit Hilfe der Maus (linke Taste) markiert werden. Das Einfügen erfolgt ebenfalls mit Hilfe einer Tastenkombination C-y, bzw. mit Hilfe der mittleren Maustaste.
Formatierung, Änderung, Tausch
TASTE | BEDEUTUNG | TASTE | BEDEUTUNG | |
TAB | Einrückung Zeile | C-M-\ | Einrückung Region | |
C-x TAB | Einrückung Region erzwungen | |||
C-o | Neue Zeile | C-M-o | Restliche Zeile nach unten | |
C-x C-o | Entferne leere Zeilen | M-^ | Verbinde Zeile mit voriger | |
M-\ | Entferne leere Zeichen | M-SPC | Exakt ein Leerzeichen | |
M-q | Fülle Paragraph | C-x f | Setzte Füll Spalte | |
M-u | Großbuchstaben Wort (upper) | M-l | Kleinbuchstaben Wort (lower) | |
M-c | Erster Buchstaben groß (capitalize) | |||
C-x C-u | Großbuchstaben Region (upper) | C-x C-l | Kleinbuchstaben Region (lower) | |
C-t | Austausch Zeichen | M-t | Austausch Worte | |
C-x C-t | Austausch Zeilen |
Suchen und Ersetzen
TASTE | BEDEUTUNG | TASTE | BEDEUTUNG | |
C-s | Suche vorwärts | C-r | Suche rückwärts | |
M-p | Wähle vorherigen Suchstring | M-n | Wähle nächsten Suchstring | |
RET | Beende Suche | C-g | Abbruch der Suche | |
M-% | Suche und Ersetzen (interactiv) |
Im Suchen und Ersetzen Modus M-% sind die folgenden Antworten möglich: ? Hilfe; SPC ersetze und geh weiter; , ersetze und bleibe am selben Platz; . ersetze und beende; DEL ersetze nicht und geh weiter; ! ersetze alle Weiteren; ^ zurück zum vorherigen Suchresultat; RET beende den Ersetzungsmodus; E editiere die Ersetzungszeichen.
Links
- Ein Tutorial auf www.linux-fuer-alle.de
- Emacs Refcard... Die wichtigsten shortcuts
- Eine gekürzte Version der Refcard. Zum ausdrucken gedacht.
- Komplette Referenzkarte Viele nützliche Shortcuts auf 2 A4 Seiten, am besten mit dem Acrobat Reader ausdrucken.