Emacs Basics - Überblick für Einsteiger

Vortrag im Rahmen der Grazer Linux Tage 2003

Stefan Thalauer <emacs@thalauer.net>

Wann:
Freitag, 25. April 2003 18:00
Wo:
FH Joanneum - Alte Poststraße 149, 8020 Graz, EDV Labor 4

Inhalt

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).

Dauer:
ca. 1 h
Niveau:
Anfänger und Fortgeschrittene

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.

Übersicht

  1. Emacs Grundlagen
  2. Dateien editieren
  3. Such- und Ersetzoperationen
  4. Buffer und Fenster
  5. Emacs als Arbeitsumgebung
  6. Gnus (News und Mail)
  7. Texte erstellen (HTML/XML, Latex)
  8. Makros
  9. Konfiguration des Emacs
  10. Dokumentation

Einführung

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:

Konventionen

Modifier Taste
CONTROL C STRG
META M ALT (ESC)
SHIFT S Umschalt
(none> DEL BACKSPACE.

Bedeutung der Modifier

C-g
Die CTRL Taste und g gleichzeitig drücken.
ESC x
Die ESC Taste drücken, loslassen und danach x drücken.
M-x
Die ALT Taste und x gleichzeitig drücken.
M-C-s
Die STRG Taste, ALT Taste und s gleichzeitig drücken.

ESC x ist gleichbedeutend zu M-x.

Zurück zur Übersicht

Emacs Grundlagen

Dateien und Buffer

Starten

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

Emacs Befehle

Modes

Major Modes

ModeFunktion
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.

Minor Modes

ModeFunktion
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

Eine Datei öffnen

Default Directory

Dateien speichern

Emacs beenden

Zusammenfassung

Dateibehandlungs Befehle

TastendrückeBefehlWirkung
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.
Zurück zur Übersicht

Dateien editieren

Abbrechen und Rückgängig

Navigation

Es gibt verschiedenste Möglichkeiten in Dateien zu navigieren.

cursor movement

Navigation am besten im Tutorial (C-h t) üben!

Navigations Befehle

TastendrückeBefehlWirkung
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.

Weitere Navigation

TastendrückeBefehlWirkung
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).

Löschen

Gelöschtes wieder einfügen

Ausschneiden und Kopieren

Löschbefehle

TastendrückeBefehlWirkung
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.

Paragraphen formatieren

TastendrückeBefehlWirkung
M-q fill-paragraph Paragraph neu formatieren.
(none) fill-region Region neu formatieren.
C-x h mark-whole-buffer Ganze Datei markieren.

Überschreiben

Register

TastendrückeBefehlWirkung
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.

Tipps und Tricks

Austausch von:

TastendrückeBefehlWirkung
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.

Großschrift

TastendrückeBefehlWirkung
M-c capitalize-word Erster Buchstabe großgeschrieben.
M-u upcase-word Großgeschriebenes Wort.
M-l downcase-word Kleingeschriebenes Wort.
Zurück zur Übersicht

Suchen

Ersetzen

Incremental Search

TastendrückeBefehlWirkung
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.

Weitere Suchen

Simple Search

TastendrückeWirkung
C-s RETURN
searchstring RETURN
Simple Suche Vorwärts
C-r RETURN
searchstring RETURN
Simple Suche Rückwärts

Word Search

TastendrückeBefehlWirkung
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

Suchen Ersetzen

Einfache Suche und Ersetzen

Query-Replace

Query-Replace Interaktion

TastendrückeWirkung
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.

Operationen wiederholen

TastendrückeBefehlWirkung
C-x ESC ESC repeat-complex-command Komplexe Operation wiederholen

Komplexe Operationen wiederholen funktioniert nicht nur bei Query-replace!

Rekursives Editieren

Rekursives Editieren während Query-replace

TastendrückeWirkung
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.

Ist Suche "Case-Sensitive"?

(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.

Reguläre Ausdrücke

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)

Regular Expression Search

TastendrückeBefehlWirkung
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.

Rechtschreibprüfung

Ispell

Es ist möglich zu prüfen:

Ispell benutzen

Um einen Buffer zu überprüfen: M-x ispell-buffer RETURN

Wenn alle Worte korrekt: Spell-checking done

TastendrückeBefehlWirkung
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")

Flyspell

Um den Flyspell Mode allgemein für einen Mode zu Aktivieren:
(z.B.: LateX Mode)

(add-hook 'LaTeX-mode-hook 'flyspell-mode)

Word Abbrevation Mode

Beispiel:

Abbrevation Mode verwenden

  1. .emacs
    (setq-default abbrev-mode t)
    (read-abbrev-file "~/.abbrev_defs")
    (setq save-abbrevs t)
    (setq flyspell-abbrev-p nil)
    
  2. .emacs Speichern und evaluieren.
  3. Abbrevation definieren (C-x a - oder C-x a i l)
  4. M-x write-abbrev-file RETURN
  5. ~/.abbrev_defs RETURN

Word Abbreviation Befehle

TastendrückeBefehlWirkung
(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.

Dynamische Abbreviations

Zurück zur Übersicht

Buffer und Fenster

Fensterdefinition

Ein Buffer wird in einem Fenster dargestellt

Dies ist die Emacs Definition eines Fensters! GUI Fenster (X, MS Windows) werden hier als Frames bezeichnet!

Mit mehreren Buffern arbeiten

Um zwischen Buffern hin- und herzuschalten: C-x b gefolgt vom Buffer Name.

C-x b gefolgt vonWirkung
Neuer Buffer Name Neuer Buffer wird erzeugt.
Name eines existierenden Buffer Buffer wird aktiv.

Buffer löschen

Mit C-x k (kill-buffer) kann ein Buffer gelöscht werden.

Fenster

TastendrückeBefehlWirkung
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.

Liste aller Buffer

Um die Liste aller Buffer zu erhalten: C-x C-b

MR-Key

.
angezeigt
*
verändert
%
nur lesen
D
für löschen markiert
S
für speichern markiert

Befehle

TastendrückeWirkungPassiert
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

Lesezeichen

Mit Bookmarks ist es möglich sich Positionen in verschiedenen Dateien zu merken

TastendrückeBefehlWirkung
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.
Zurück zur Übersicht

Emacs als Arbeitsumgebung

Arbeiten mit Verzeichnissen

Shell Commands ausführen

Es können Shell-Befehle (z.B: grep ) auf eine Datei angewandt werden: !

Dired Mode

Dateien ansehen und bearbeiten

TastendrückeWirkung
v Datei ansehen (schreibgeschützt).
RETURN Öffne Datei zum Editieren

Dateien löschen, kopieren und umbenennen

TastendrückeWirkungPassiert
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

Man

Um das Fensterverhalten zu verändern:

(setq Man-notify-method 'pushy)
Zurück zur Übersicht

Gnus (News und Mail)

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

Zurück zur Übersicht

Texte erstellen

Rechtecke Editieren

Rechteck Befehle

TastendrückeBefehlWirkung
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.
Zurück zur Übersicht

Macros

Keyboard Macros sind aufgezeichnete Befehlsabfogen.

Können wiederholt ausgeführt werden.

Anwendungsgebiete

Macros definieren

C-x (
Macro Aufzeichnung beginnen
C-x )
Macro Aufzeichnung beenden
C-x e
Macro Ausführen
C-g
Macro Aufzeichnung abrechen. (Definition Verwerfen)

Beispiel:

C-x ( C-e C-f RETURN C-f C-x )

Tipps für gute Macros

Macro Befehle

TastendrückeBefehlWirkung
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
Zurück zur Übersicht

Konfiguration des Emacs

Tastaturbelegung

(global-set-key "\C-xl" 'goto-line)
(add-hook 'c-mode-hook
          (lambda ()
          (local-set-key "\C-cc" 'compile))

Variablen

(setq auto-save-interval 800)
Zurück zur Übersicht

Dokumentation (Emacs Hilfe)

TastendrückeBefehlWirkung
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?

Literatur

Online Resourcen

Emacs

Online Resourcen

Gnus

Online Resourcen

Zusätzliche Pakete

Ende

Diese Seiten finden sich unter:
<http://www.thalauer.net/docs/emacs_vortrag_2003_04_25.html>
Fragen, Anregungen und Beschwerden:
Mail an Stefan Thalauer: <emacs@thalauer.net>

Um die Präsentation zu beenden bitte F11 drücken.

Made with opera show

Zurück zur Startseite |  Zurück zum Seitenanfang |  Zurück zur Übersicht