Erster Termin

Emacs-Workshop

1 2010-03-22    erster_tag

1.1 Organisatorisches

  • reicht der Platz? => ja
  • passt der Termin / die Uhrzeit? => Beginn verschoben auf 19:00
  • 2010-04-05 ist Ostermontag, ist das gut oder schlecht?
    (3-4 Leute wuerden kommen)

1.2 Vorstellung

Arbeite seit ca. 2000 als Systemadministrator und Programmierer (Web).
Benutze GNU Emacs ernsthaft seit 2001 (Version 21), davor sporadisch
bzw. einen Emacs-Klon (jove).

Ich benutze Emacs

  • zum Programmieren (Ruby/Rails, HTML, CSS, JavaScript; PHP, Python,
    C, Common Lisp und natuerlich Emacs Lisp)
  • fuer umfangreichere Sysadmin-Aufgaben (z.B. Apache-Konfiguration
    aufraeumen)
  • fuer Email, News und Chat (IRC, Jabber, IM via Bitlbee)
  • fuer Notizen und Vortraege (Org-mode)
  • fuer Artikel und Briefe (LaTeX mit AucTeX)

1.3 Warum mache ich diesen Workshop?

  • andere fuer Emacs begeistern
  • Einstieg in Emacs kann schwierig sein, denn

    • Emacs hat eine lange Geschichte, viele Begrifflichkeiten sind
      anders als erwartet.
    • entgegen den Erwartungen laesst sich nicht alles ueber das GUI
      ansprechen, die Konfiguration ueber das “customize”-System ist
      verwirrend und unuebersichtlich.
    • Im Kern arbeitet ein Skript-Interpreter, die Konfiguration ist
      Teil der Skripte, die laufen => Konfigurationsfehler fuehren zu
      Laufzeitfehlern, die ohne Grundkenntnisse in Emacs Lisp
      verwirrend sein koennen.

Wenn ich manches frueher gewusst haette, waere mein Weg zu Emacs
leichter gewesen – ihr sollt es besser haben.

1.4 Und ihr?

Wer von euch programmiert?

…fuer Geld?

Spielt gern mit Linux/freier Software herum?

…fuer Geld?

Welches OS benutzt ihr hauptsaechlich?

Welchen Editor?

  • Emacs
  • vi(m)
  • Textmate / jEdit
  • Eclipse / Netbeans / IDEA / VS
  • notepad / gedit / nano
  • scite / notepad++ / kate

Konsole oder GUI?

Benutzt ihr Emacs schon, wie gut kennt ihr ihn?

  • gar nicht
  • natuerlich hab ich das Tutorial gemacht!
  • hab ich mal ausprobiert
  • benutze ich gelegentlich, Grundkenntnisse
  • benutze ich viel, zeig mir Tricks

1.4.1 Themen

  • Konfiguration mit und ohne “Customize”
  • Emacs-Extensions installieren

  • Lisp-Grundlagen
  • Emacs Lisp im Detail

  • Tools fuer Programmierer (Versionskontrolle, Syntax-Check, Debugger, Codebrowser )

  • Emacs als Mailprogramm (gnus)
  • LaTeX (AucTeX)
  • Terminplaner und mehr (Org-Mode)
  • Zugriff auf entfernte Dateien (TRAMP)
  • Filemanager (Dired)

1.5 Installation

Hat alles geklappt? Versionen < 22, 22.x, 23.1, > 23.1?

X oder Konsole?

  • X hat mehr Farben (besseres Syntax-Highlighting)
  • X kann mehr Tastenkombinationen unterscheiden
  • Konsole und Backspace funktioniert nicht? => stty erase ‘^?’
  • Maus/Scrollrad funktionieren auch in der Konsole

1.6 Hilfesystem

1.6.1 Hilfesystem “Info”

“Info” ist ein fruehes Hypertext-System, aelter und simpler als HTML
aber leistungsfaehiger als *NIX “manpages”.
Es ist das Dokumentationsformat des GNU-Projektes

Help > Read the Emacs Manual
“h” ruft das Info-Tutorial auf. Es lohnt sich!

Das Emacs-Handbuch ist euer Freund, es ist ausfuehrlich, hilfreich,
gut geschrieben und passt immer zur installierten Version. Englisch
sollte man aber schon verstehen.

Entweder machen wir das zusammen oder ich helfe noch bei
Installationsproblemen und fassen das kurz zusammen.

Unter Debian ist die Dokumentation in einem separaten Paket zu finden,
wegen Konflikten zwischen der GFDL und den DFSG absurderweise in
“non-free”. Siehe dazu auch http://www.emacswiki.org/emacs/EmacsManualLicense

  • Die wichtigsten Tastenbindungen fuer Info
    SPACE, BackSpace 
      vorwaerts/rueckwaerts blaettern
    n, p
      naechster/vorheriger Knoten
    u, ^
      einen Knoten hoch
    m, 0-9
      Knoten aus Menue auswaehlen (rote Markierungen in 3er-Schritten)
    l, r
      History zurueck, vor ("left", "right")
    i
      Index 
    t 
      zum Anfangsknoten ("top")
    d 
      zum Verzeichnis ("directory")
    q
      Info-Buffer verstecken
    T
      Inhaltsverzeichnis ("Table of contents")
    
  • andere interessante Doku im Info-Format
    • elisp (Emacs Lisp Reference)
    • eintr (Emacs Lisp Introduction)

    • bash (als man-page nur schwer verdaulich)
    • python (bis python-2.5)
    • mysql
    • zsh
    • GNU libc, gawk, GNU sed

1.6.2 Externe Quellen

1.7 Grundbegriffe

1.7.1 Anzeigeelemente

  • menu bar (selbsterklaerend)
  • tool bar (reine Platzverschwendung)
  • scroll bar (rechts oder links)
  • fringe (fuer Breakpoints, Falzmarken etc.)
  • mode line
  • echo area

1.7.2 Tasten, Notation

C-x ist Control-x / Strg-x
M-x ist meist Alt-x oder "ESC x" (hintereinander) ("Meta")
M-C-x entweder: Alt+Control+x oder ESC Control+x

Eine Tastenkombination kann sich aus mehreren Tastendruecken
zusammensetzen, z. B. “C-x C-f” oder “C-x r k”, ein sog. “key chord”.

Wenn ihr nicht wisst, was ihr schon eingegeben habt, wartet ein
bisschen, Emacs blendet die Tasten unten in der “Echo Area” ein.

Wenn ihr mal nicht weiter kommt: C-g bricht ab.

1.7.3 Buffer, Window, Frame

  • Buffer

    Jede geoeffnete Datei hat mindestens einen Buffer.
    Es gibt Buffer ohne Datei.
    Ein Buffer kann in mehreren Fenstern angezeigt werden.

    Eine Datei oeffnet man mit

    C-x C-f  find-file
    

    Findet heraus, was TAB macht. Die Eingabe des Dateinamens findet im
    “Minibuffer” statt, der sich die untere Bildschirmzeile mit der “Echo
    Area” teilt.

    Buffer wechseln kann man ueber das “Buffers” Menue, C-mouse-1, mit

    C-x b   switch-to-buffer
    C-x C-b list-buffers
    

    und auf vielen anderen Wegen.

    Man sammelt in Emacs schnell viele Buffer an, das stoert aber nicht,
    sobald man eine effiziente Methode zum Puffer-wechseln gefunden
    hat. Ein GUI mit Tabs waere dafuer allerdings wenig praktikabel.

    Weitere wichtige Kommandos fuer Buffer:

    C-x k    Buffer loeschen ("kill")
    C-x C-s  Datei speichern
    
  • Window

    Ein Emacs “Window” wuerde man heute “Split” oder “Pane” nennen. Warum
    der Name? Emacs ist aelter als grafische Oberflaechen.

    C-x 2  horizontal teilen
    C-x 3  vertikal teilen
    C-x 1  Split aufheben
    C-x 0  dieses "Window" entfernen
    C-x o  "Window" wechseln
    

    Einige nuetzliche Funktionen fangen mit C-x 4 an:

    C-x 4 f  find-file-other-window
    C-x 4 b  switch-to-buffer-other-window
    

    Uebrigens: alle Tastenbindungen, die mit C-x 4 anfangen, koennt ihr
    mit:

    C-x 4 C-h 
    

    sehen.

  • Frames

    Ein Frame ist das was wir heute ein Fenster nennen. Koennt ihr raten,
    was diese Befehle bewirken?

    C-x 5 2
    C-x 5 1
    C-x 5 0
    C-x 5 o
    

    “Frames” gibt es auch auf der Konsole, dort ist aber immer nur ein
    “Frame” sichtbar.

    Es gibt noch mehr Tastenbindungen, die mit C-x 5 anfangen, teilweise
    analog zu C-x 4. Wie findet ihr das heraus?

1.7.4 Point, Mark, Region

C-SPACE  setzt die "Mark"
C-x C-x  tauscht "Point" und "Mark"

1.7.5 Kill, Yank und der Kill-Ring

C-w      loescht die Region ("kill")
M-w      kopiert die Region in den Kill-Ring
C-y      einfuegen "yank"
M-y      geht durch den Kill-Ring

1.7.6 Hilfe

C-h b  listet alle Tastenbindungen
C-h k  zeigt Hilfe zu einer Tastenbindung
C-h K  springt in die Info-Dokumentation zu einer Tastenbindung
C-h f  zeigt Hilfe zu einem Kommandonamen

1.7.7 Suchen und Ersetzen

C-s    I-Search vorwaerts
C-r    I-Search rueckwaerts
  C-w  Naechstes Wort in den Suchstring kopieren
  C-y  Zeile in den Suchstring kopieren
  M-y  aus dem Kill-Ring kopieren
  M-c  Case-Sensitive umschalten
  M-r  Regex an/aus
  M-%  suchen und ersetzen beginnen
  
M-%   Suchen und ersetzen
 
C-M-s  I-Search mit regulaeren Ausdruecken
C-M-r  
C-M-% 

1.7.8 Hausaufgaben

Im Manual blaettern

Durch’s Hilfesystem klicken