Emacs: Unterschied zwischen den Versionen

Aus wiki.archlinux.de
Keine Bearbeitungszusammenfassung
Zeile 8: Zeile 8:
* eine '''Programmierplattform und Laufzeitumgebung''' für Lisp-Anwendungen, beispielsweise News- und Mail-Clients,
* eine '''Programmierplattform und Laufzeitumgebung''' für Lisp-Anwendungen, beispielsweise News- und Mail-Clients,
* eine offene '''Entwicklungsumgebung'''.
* eine offene '''Entwicklungsumgebung'''.
(Manche witzeln, er sei ein eigenes Betriebssystem.) Diese Präsentation [[http://stuff.mit.edu/iap/2009/emacs/part1.html]] gibt einen guten Überblick.
Manche witzeln, er sei ein eigenes Betriebssystem. Die folgende Präsentation gibt mit vielen screenshots einen guten Überblick [[http://stuff.mit.edu/iap/2009/emacs/part1.html]].


Emacs wurde von Richard Stallman in LISP begonnen und steht unter der GPL.
Emacs wurde 1984 von Richard Stallman in Lisp begonnen und steht unter der GPL.




'''Hinweis''': Es kann nicht Sinn dieser Abhandlung sein, emacs in seiner Funktion zu erklären oder gar zu dokumentieren. Zu emacs gibt es tonnenweise Material im Internet (siehe Links), teilweise auch auf Deutsch, so dass man sich jederzeit konkret und detailliert informieren kann. Ziel ist hier, die Installation und Konfiguration zu erläutern und einen Überblick über die wichtigsten Funktionen zu geben, was als Anregung zum Ausprobieren verstanden werden soll.
'''Abgrenzung''': Es kann nicht Sinn dieser Abhandlung sein, emacs in seiner Funktion zu erklären oder gar zu dokumentieren. Zu emacs gibt es tonnenweise Material im Internet (siehe Links), teilweise auch auf Deutsch, so daß man sich jederzeit konkret und detailliert informieren kann. Ziel ist hier, die Installation und Konfiguration zu erläutern und einen Überblick über die wichtigsten Funktionen zu geben, was als Anregung zum Ausprobieren verstanden werden soll.




Zeile 24: Zeile 24:


== Starten ==
== Starten ==
Um Emacs zu starten, muss man nur
Um Emacs zu starten, muß man nur
  emacs
  emacs
in die Konsole eingeben. Befindet man sich unter X11, wird die X11-Fassung von Emacs in einem neuen Fenster gestartet. Es wäre ratsam, in diesem Fall emacs mit & zu starten:
in die Konsole eingeben. Befindet man sich unter X11, wird die X11-Fassung von Emacs in einem neuen Fenster gestartet. Es wäre ratsam, in diesem Fall emacs mit & zu starten:
  emacs &
  emacs &
da er sonst das Terminal blockiert. Wenn man Emacs unter X11 im aktuellen Terminal starten möchte, ohne dass ein neues Fenster geöffnet wird, so kann man
da er sonst das Terminal blockiert. Wenn man Emacs unter X11 im aktuellen Terminal starten möchte, ohne daß ein neues Fenster geöffnet wird, so kann man
  emacs -nw  
  emacs -nw  
eingeben, dann in jedem Falle ohne &.
eingeben, dann in jedem Falle ohne &.


Sofern kein X11 läuft, kann man emacs auch auf der Kommandozeile starten, wobei der Zusatz -nw nicht notwendig ist. Möglicherweise funktionieren allerdings einige Tasten anders. (ausprobieren)
Sofern '''kein X11''' läuft, kann man emacs auch auf der Kommandozeile starten, wobei der Zusatz -nw nicht notwendig ist. Möglicherweise funktionieren allerdings einige Tasten anders (ausprobieren). Das Menü wird aus Platzgründen normalerweise nicht angezeigt, man kann es mit der Funktionstaste F10 hervorholen.


Emacs bietet ein Modell an, bei dem quasi ein emacs-Dämon als '''Server''' läuft, während die später interaktiv vom Benutzer gestarteten emacs-Prozesse jeweils '''Clients''' dieses Servers werden. Der Vorteil liegt vor allem in geringerer Ladezeit. Näheres hier [[http://www.gnu.org/software/emacs/manual/html_node/emacs/Emacs-Server.html#Emacs-Server]]
Emacs bietet ein Modell an, bei dem quasi ein emacs-Dämon als '''Server''' läuft, während die später interaktiv vom Benutzer gestarteten emacs-Prozesse jeweils '''Clients''' dieses Servers werden. Der Vorteil liegt vor allem in geringerer Ladezeit. Näheres hier [[http://www.gnu.org/software/emacs/manual/html_node/emacs/Emacs-Server.html#Emacs-Server]]


Man wird allerdings selten emacs immer und immer wieder starten, wie man es vielleicht von [[vi]] her kennt. Emacs bietet (beispielsweise mit dired) andere Möglichkeiten an, schnell Dateien zu öffnen, so dass das ständige Laden eigentlich überflüssig wird. Viele Benutzer haben ihren emacs stunden- und tagelang offen. Eine Frage des persönlichen Geschmacks.
Man wird allerdings selten emacs immer und immer wieder starten, wie man es vielleicht von [[vi]] her kennt. Emacs bietet (beispielsweise mit dired) andere Möglichkeiten an, schnell Dateien zu öffnen, so daß das ständige Laden eigentlich überflüssig wird. Viele Benutzer haben ihren emacs stunden- und tagelang offen. Eine Frage des persönlichen Geschmacks.


== Bedienung ==
== Bedienung ==
Emacs wird üblicherweise vollständig über die '''Tastatur''' gesteuert. Er besitzt die Besonderheit, dass auch mehrere separate Tasten(kombinationen) hintereinander einen einzelnen Befehl auslösen können, beispielsweise nacheinander C-s und C-f (Datei öffnen). Tastenkombinationen können zudem (zumindest auf europäischen Tastaturen) auch aus drei Tasten bestehen, beispielsweise M-% (Suchen und Ersetzen), was auf einer deutschen oder schweizer Tastatur zu S-M-5 wird. (Zur Notation von Tastenkombinationen siehe hier [[http://www.gnu.org/software/emacs/manual/html_node/emacs/User-Input.html#User-Input]] und [[http://www.gnu.org/software/emacs/manual/html_node/emacs/Keys.html#Keys]])
Emacs wird üblicherweise vollständig über die '''Tastatur''' gesteuert. Er besitzt die Besonderheit, daß auch mehrere separate Tasten(kombinationen) hintereinander einen einzelnen Befehl auslösen können, beispielsweise nacheinander C-s und C-f (Datei öffnen). Tastenkombinationen können zudem (zumindest auf europäischen Tastaturen) auch aus drei Tasten bestehen, beispielsweise M-% (Suchen und Ersetzen), was auf einer deutschen oder schweizer Tastatur zu S-M-5 wird. (Zur Notation von Tastenkombinationen siehe hier [[http://www.gnu.org/software/emacs/manual/html_node/emacs/User-Input.html#User-Input]] und [[http://www.gnu.org/software/emacs/manual/html_node/emacs/Keys.html#Keys]])


Die enorme Anzahl der Tastenkombinationen und ihre oft merkwürdige Anordnung auf der Tastatur haben in den letzten 20 Jahren zu viel Spott geführt. Man benötigt aber in der Tat nur einen kleinen Teil davon, wenige Prozent, und diese kann man lernen, es ist weit weniger schwer als es zunächst aussieht.
Die enorme Anzahl der Tastenkombinationen und ihre oft merkwürdige Anordnung auf der Tastatur haben in den letzten 20 Jahren zu viel Spott geführt. Man benötigt aber in der Tat nur einen kleinen Teil davon, wenige Prozent, und diese kann man lernen, es ist weit weniger schwer als es zunächst aussieht.
Zeile 70: Zeile 70:
...
...


== Überblick ==
== Funktionsüberblick ==
=== Dateiverwaltung in emacs ===
=== Dateiverwaltung in emacs ===
Es gibt mehrere Implementierungen von Dateiverwaltungen unter emacs (selbst solche mit zwei gegenüberliegenden Seiten). Die bekannteste davon, die auch standardmäßig mit jedem emacs mitgeliefert wird, ist '''dired''' (''directory editor''). Man startet dired über
Es gibt mehrere Implementierungen von Dateiverwaltungen unter emacs (selbst solche mit zwei gegenüberliegenden Seiten). Die bekannteste davon, die auch standardmäßig mit jedem emacs mitgeliefert wird, ist '''dired''' (''directory editor''). Man startet dired über
Zeile 81: Zeile 81:
Man kann nicht sagen, welche besser oder komfortabler sei - sie sind ''verschieden''. Beide Varianten nehmen (wie in einem Terminal) an einem Prompt gewöhnliche Benutzereingaben entgegen, führen diese aus und stellen die Ausgaben wieder im gleichen buffer dar.
Man kann nicht sagen, welche besser oder komfortabler sei - sie sind ''verschieden''. Beide Varianten nehmen (wie in einem Terminal) an einem Prompt gewöhnliche Benutzereingaben entgegen, führen diese aus und stellen die Ausgaben wieder im gleichen buffer dar.


Der wesentliche Unterschied zwischen beiden Varianten ist, dass shell tatsächlich im Hintergrund eine default-sh des Benutzers startet, meist also [[bash]], mit vorschriftsmässiger Initialisierung, so dass also beispielsweise auch in .bashrc definierte Aliase gleich funktionieren, während eshell in Lisp programmiert ist und nur die eingegebenen Kommandos als externe Prozesse startet. Eshell kann deshalb auch einfach über Schliessen des buffers (C-x k RET) beendet werden, während man in shell explizit exit schreiben oder Ctrl-D drücken muss, um den im Hintergrund laufenden sh-Prozess zu beenden, und erst dann den buffer schliessen darf.
Der wesentliche Unterschied zwischen beiden Varianten ist, daß shell tatsächlich im Hintergrund eine default-sh des Benutzers startet, meist also [[bash]], mit vorschriftsmäßiger Initialisierung, so daß also beispielsweise auch in .bashrc definierte Aliase gleich funktionieren, während eshell in Lisp programmiert ist und nur die eingegebenen Kommandos als externe Prozesse startet. Eshell kann deshalb auch einfach über Schließen des buffers (C-x k RET) beendet werden, während man in shell explizit exit schreiben oder Ctrl-D drücken muß, um den im Hintergrund laufenden sh-Prozeß zu beenden, und erst dann den buffer schließen darf.


Hey, man kann in eshell (nicht in shell) sogar [[vim]] starten! (Na, wenn das nicht etwas ist, auf das emacs-Benutzer lange gewartet haben ...)
Hey, man kann in eshell (nicht in shell) sogar [[vim]] starten! (Na, wenn das nicht etwas ist, auf das emacs-Benutzer lange gewartet haben ...)


=== Emacs als Entwicklungsumgebung ===
=== Emacs als Entwicklungsumgebung ===
Man kann emacs hervorragend als Entwicklungsumgebung benutzen, sofern man unter "entwickeln" Quelltexte editieren, compilieren und debuggen meint. Emacs bietet für fast alle dieser Vorgänge hilfreiche Unterstützungen an, ohne daß man allerdings von echter Integration sprechen könnte. Der Vorteil liegt in der Offenheit in so ziemlich jeder Hinsicht.


==== Editieren ====
==== Editieren ====
...
Das Editieren von Quelltexten findet in normalen Text-buffern statt. Emacs lädt verschiedene Modi, sobald er erkennt, daß es sich um eine Quelldatei eines bestimmten Typs handelt, um beispielsweise Syntax Highlighting und Indenting (sog. ''font-locking'') durchzuführen. So wird bei Dateien mit der Endung .c oder .cc (.cpp, .c++, .cxx, .C, .h, .hpp, .H, ...) automatisch der cc-mode geladen, der C- und C++-Dateien farbig anzeigt. Ähnliches gilt für Java-, Lisp- oder XML- und unzählige andere Dateien.
 
Das Indenting (automatisches Einrücken) ist nicht jedermanns Sache. Es verwirrt auch leicht oder wird lästig, wenn es nicht den eigenen Gewohnheiten entspricht. Man kann es in gewissen Grenzen konfigurieren. Einige modes bieten die Möglichkeit, es ganz abzuschalten, beispielsweise der cc-mode: (c-syntactic-indentation nil).
 
Es macht sich sehr gut, wenn man einen dired buffer benutzt und darin die Quelldateien auflistet. Dann kann man sehr schnell von einer Datei zur anderen wechseln. Dired kann auch als Client für Versionskontrollsysteme ([[cvs]], weitere?) benutzt werden.


==== Browser für Quellcode ====
==== Browser für Quellcode ====
...
Wer niveauvollere Möglichkeiten sucht, in seinen Quelltexten zu navigieren, dem stehen verschiedene Varianten zur Verfügung.
 
Wer gewohnt ist, mit '''tags''' (beispielsweise [[ctags]]) zu arbeiten, kann seine tags-Dateien unter emacs benutzen:
M-x tags-search RET  oder  M-x tags-apropos RET
emacs listet daraufhin alle Vorkommen des gesuchten tags in einem eigenen buffer auf, so daß man sie einfach durchlaufen kann.
 
Etwas anderes ist die '''Speedbar'''.
M-x speedbar RET
Die Speedbar ist ein (normalerweise separates) Fenster, das die aktuelle Quelldatei nach bestimmten Regeln parst und quasi ein dynamisches Inhaltsverzeichnis mit den darin gefundenen Klassen und Funktionen anzeigt. Die Speedbar erfordert überlicherweise keinerlei Konfiguration und zeigt sofort brauchbare Ergebnisse, um sehr schnell innerhalb der geöffneten Datei zu navigieren. Es gibt mehrere Versuche, die Speedbar ins aktuelle fenster zu integrieren, damit nicht ein separates Fenster auf dem Bildschirm geöffnet wird (siehe [[http://www.emacswiki.org/emacs/sr-speedbar.el]])


==== Compilieren ====
==== Compilieren ====
Zeile 103: Zeile 116:


=== News und Mail in emacs ===
=== News und Mail in emacs ===
Emacs besitzt standardmässig mehrere mail-Betriebsarten ('''mail''', '''mh''', '''rmail''') unterschiedlichen Funktionsumfangs, sowie einen universalen mail/news/rss-Client in Lisp ('''Gnus'''). Letzterer ist die umfassendste Variante, erfordert aber auch die komplexeste Konfiguration sowie einige Übung im Umgang. Dafür erhält man eines der leistungsfähigsten Programme dieser Art auf der Welt (screenshots [[http://upload.wikimedia.org/wikipedia/commons/c/c3/Gnus-reading-news.png]], [[http://stuff.mit.edu/iap/2009/emacs/images/gnus.png]]).
Emacs besitzt standardmäßig mehrere mail-Betriebsarten ('''mail''', '''mh''', '''rmail''') unterschiedlichen Funktionsumfangs, sowie einen universalen mail/news/rss-Client in Lisp ('''Gnus'''). Letzterer ist die umfassendste Variante, erfordert aber auch die komplexeste Konfiguration sowie einige Übung im Umgang. Dafür erhält man eines der leistungsfähigsten Programme dieser Art auf der Welt (screenshots [[http://upload.wikimedia.org/wikipedia/commons/c/c3/Gnus-reading-news.png]], [[http://stuff.mit.edu/iap/2009/emacs/images/gnus.png]]).




Zeile 118: Zeile 131:
Gnus kann POP3- und IMAP-Postfächer und selbst den Inhalt von Verzeichnissen auf der Festplatte abfragen, ist in der Lage, beim Senden und Empfangen verschiedene Verschlüsselungen anzuwenden und kann bedingt auch HTML rendern oder Artikel "waschen" (insbesondere solche, die von Outlook stammen). Gnus kann auch mit Hilfe des ''Gnus Agent'' als Offline-News-Reader eingesetzt werden. Dabei werden die Artikel lokal in einem Verzeichnis(baum) gespeichert. Gnus besitzt ausgeklügelte Filter- und Scoring-Möglichkeiten.
Gnus kann POP3- und IMAP-Postfächer und selbst den Inhalt von Verzeichnissen auf der Festplatte abfragen, ist in der Lage, beim Senden und Empfangen verschiedene Verschlüsselungen anzuwenden und kann bedingt auch HTML rendern oder Artikel "waschen" (insbesondere solche, die von Outlook stammen). Gnus kann auch mit Hilfe des ''Gnus Agent'' als Offline-News-Reader eingesetzt werden. Dabei werden die Artikel lokal in einem Verzeichnis(baum) gespeichert. Gnus besitzt ausgeklügelte Filter- und Scoring-Möglichkeiten.


Der Leistungsumfang von Gnus ist so vielfältig, dass ihm ein eigenes Manual gewidmet ist [[http://www.gnu.org/software/emacs/manual/html_node/gnus/index.html]]. Es lohnt sich, dieses Manual durchzuarbeiten, um die obligatorische Konfiguration durchführen zu können. Die resultierende Konfigurationsdatei .gnus ist zwar meist überschaubar, allerdings etwas knifflig in der Erstellung. Erschwert wird die Konfiguration dadurch, dass Gnus auf anderen Komponenten (message) aufbaut, die separat konfiguriert werden. Siehe ferner auch hier [[http://www.emacswiki.org/cgi-bin/wiki/CategoryGnus]]
Der Leistungsumfang von Gnus ist so vielfältig, daß ihm ein eigenes Manual gewidmet ist [[http://www.gnu.org/software/emacs/manual/html_node/gnus/index.html]]. Es lohnt sich, dieses Manual durchzuarbeiten, um die obligatorische Konfiguration durchführen zu können. Die resultierende Konfigurationsdatei .gnus ist zwar meist überschaubar, allerdings etwas knifflig in der Erstellung. Erschwert wird die Konfiguration dadurch, daß Gnus auf anderen Komponenten (message) aufbaut, die separat konfiguriert werden. Siehe ferner auch hier [[http://www.emacswiki.org/cgi-bin/wiki/CategoryGnus]]


=== Internet in emacs ===
=== Internet in emacs ===
Eine sehr interessante Erweiterung für emacs ist das Lisp-Paket '''emacs-w3m''' [[http://emacs-w3m.namazu.org/]], eine Schicht, die es erlaubt, den Textbrowser [[w3m]] in emacs laufen zu lassen, d.h. von emacs aus vollständig zu bedienen. Man muss dann emacs nicht mehr verlassen, um mal schnell eine Internetsuche durchzuführen.
Eine sehr interessante Erweiterung für emacs ist das Lisp-Paket '''emacs-w3m''' [[http://emacs-w3m.namazu.org/]], eine Schicht, die es erlaubt, den Textbrowser [[w3m]] in emacs laufen zu lassen, d.h. von emacs aus vollständig zu bedienen. Man muß dann emacs nicht mehr verlassen, um mal schnell eine Internetsuche durchzuführen.


emacs-w3m wird nicht mitgeliefert. w3m (der eigentliche Browser) und emacs-w3m können über pacman installiert werden:
emacs-w3m wird nicht mitgeliefert. w3m (der eigentliche Browser) und emacs-w3m können über pacman installiert werden:
  pacman -Sy w3m emacs-w3m
  pacman -Sy w3m emacs-w3m
Man muss anschliessend sehr wahrscheinlich einen load-path in seine .emacs einfügen, damit emacs das Paket findet.
Man muß anschließend sehr wahrscheinlich einen load-path in seine .emacs einfügen, damit emacs das Paket findet.


Man startet emacs-w3m über
Man startet emacs-w3m über
Zeile 140: Zeile 153:
Emacs ist ''self documenting'', d.h. in jedem Belang ausführlich dokumentiert. Diese Dokumentation ist jederzeit im Editor selbst abrufbar. Man startet sie über
Emacs ist ''self documenting'', d.h. in jedem Belang ausführlich dokumentiert. Diese Dokumentation ist jederzeit im Editor selbst abrufbar. Man startet sie über
  C-h r
  C-h r
und gelangt in den emacs-eigenen Info-Browser. Den Umgang mit dem Info-System, einem Vorläufer von HTML, muss man etwas üben. Die dazu nötigen Tasten stehen am oberen Rand des buffers. Merken muss man sich vor allem u (up).
und gelangt in den emacs-eigenen Info-Browser. Den Umgang mit dem Info-System, einem Vorläufer von HTML, muß man etwas üben. Die dazu nötigen Tasten stehen am oberen Rand des buffers. Merken muß man sich vor allem u (up).





Version vom 20. August 2009, 15:50 Uhr


(ich arbeite in den nächsten Tagen an dieser Datei! T.M. 19.08.2009)


Emacs ist

  • ein sehr umfangreicher und mächtiger, enorm weit verbreiteter Editor,
  • eine Programmierplattform und Laufzeitumgebung für Lisp-Anwendungen, beispielsweise News- und Mail-Clients,
  • eine offene Entwicklungsumgebung.

Manche witzeln, er sei ein eigenes Betriebssystem. Die folgende Präsentation gibt mit vielen screenshots einen guten Überblick [[1]].

Emacs wurde 1984 von Richard Stallman in Lisp begonnen und steht unter der GPL.


Abgrenzung: Es kann nicht Sinn dieser Abhandlung sein, emacs in seiner Funktion zu erklären oder gar zu dokumentieren. Zu emacs gibt es tonnenweise Material im Internet (siehe Links), teilweise auch auf Deutsch, so daß man sich jederzeit konkret und detailliert informieren kann. Ziel ist hier, die Installation und Konfiguration zu erläutern und einen Überblick über die wichtigsten Funktionen zu geben, was als Anregung zum Ausprobieren verstanden werden soll.


Installation

Emacs kann mithilfe von pacman installiert werden:

pacman -Sy emacs

Diese binaries sind für GTK compiliert und enthalten die typischen Dekoration und Stile für Menü, Toolbar und Scrollbars, zudem auch die üblichen Datei-Dialoge.

Wer emacs ohne GTK betreiben will, kann sich problemlos die Quellen beschaffen und selbst compilieren. Es besteht per configure-Option die Möglichkeit, die Verwendung der Motif-Bibliotheken zu erzwingen (diese stehen als pacman-Paket openmotif zur Verfügung) oder ganz auf die Verwendung eines Toolkits zu verzichten und rein für X11 zu compilieren, was emacs ein rustikaleres Aussehen gibt, aber möglicherweise eine halbe Sekunde Ladezeit spart.

Starten

Um Emacs zu starten, muß man nur

emacs

in die Konsole eingeben. Befindet man sich unter X11, wird die X11-Fassung von Emacs in einem neuen Fenster gestartet. Es wäre ratsam, in diesem Fall emacs mit & zu starten:

emacs &

da er sonst das Terminal blockiert. Wenn man Emacs unter X11 im aktuellen Terminal starten möchte, ohne daß ein neues Fenster geöffnet wird, so kann man

emacs -nw 

eingeben, dann in jedem Falle ohne &.

Sofern kein X11 läuft, kann man emacs auch auf der Kommandozeile starten, wobei der Zusatz -nw nicht notwendig ist. Möglicherweise funktionieren allerdings einige Tasten anders (ausprobieren). Das Menü wird aus Platzgründen normalerweise nicht angezeigt, man kann es mit der Funktionstaste F10 hervorholen.

Emacs bietet ein Modell an, bei dem quasi ein emacs-Dämon als Server läuft, während die später interaktiv vom Benutzer gestarteten emacs-Prozesse jeweils Clients dieses Servers werden. Der Vorteil liegt vor allem in geringerer Ladezeit. Näheres hier [[2]]

Man wird allerdings selten emacs immer und immer wieder starten, wie man es vielleicht von vi her kennt. Emacs bietet (beispielsweise mit dired) andere Möglichkeiten an, schnell Dateien zu öffnen, so daß das ständige Laden eigentlich überflüssig wird. Viele Benutzer haben ihren emacs stunden- und tagelang offen. Eine Frage des persönlichen Geschmacks.

Bedienung

Emacs wird üblicherweise vollständig über die Tastatur gesteuert. Er besitzt die Besonderheit, daß auch mehrere separate Tasten(kombinationen) hintereinander einen einzelnen Befehl auslösen können, beispielsweise nacheinander C-s und C-f (Datei öffnen). Tastenkombinationen können zudem (zumindest auf europäischen Tastaturen) auch aus drei Tasten bestehen, beispielsweise M-% (Suchen und Ersetzen), was auf einer deutschen oder schweizer Tastatur zu S-M-5 wird. (Zur Notation von Tastenkombinationen siehe hier [[3]] und [[4]])

Die enorme Anzahl der Tastenkombinationen und ihre oft merkwürdige Anordnung auf der Tastatur haben in den letzten 20 Jahren zu viel Spott geführt. Man benötigt aber in der Tat nur einen kleinen Teil davon, wenige Prozent, und diese kann man lernen, es ist weit weniger schwer als es zunächst aussieht.

Eine vollständige, aus der jeweils aktuellen Konfiguration des Editors heraus gebildete Liste aller Tastenkombinationen erreicht man mit

C-h b

Die Tastenkombinationen sind dort mit den durch sie ausgelösten Lisp-Funktionen aufgeführt, auf welche auch hypertextartig geklickt werden kann, um an nähere Informationen zu gelangen.


Es existiert darüberhinaus eine zentrale Möglichkeit, im sog. Mini-Buffer, den man über M-x erreicht, eine Lisp-Funktion mit ihrem Namen und ggf. Argumenten anzugeben und auszuführen. Dies scheint oft die komfortablere Möglichkeit, da man sich ggf. eher noch an verbale Begriffe erinnert als an Tastenkombinationen.


Aufgrund der begrenzten Möglichkeiten, die ihre zwei oder drei Knöpfe bieten, gibt es nur wenige Funktionen, die auf der Maus liegen. Allerdings sind die Mausknöpfe auch mehrfach, nämlich noch im Zusammenhang mit Shift und Ctrl belegt.


Ein sehr gut brauchbares Tutorial findet man im Editor selbst:

C-h t

oder im Help-Menü gleich der erste Eintrag. Es lohnt sich, dieses mal abzuarbeiten. Siehe ferner auch hier [[5]]

Emacs konfigurieren

In emacs ist praktisch alles konfigurierbar. Und es gibt nicht zwei emacse, die gleich konfiguriert sind. So wird jeder emacs zu einem ganz individuellen Werkzeug, abgestimmt auf die persönlichen Bedürfnisse und Fähigkeiten seines Benutzers.

Konfigurationsdateien

...

Menügesteuerte Konfiguration

...

Customizing

...

Funktionsüberblick

Dateiverwaltung in emacs

Es gibt mehrere Implementierungen von Dateiverwaltungen unter emacs (selbst solche mit zwei gegenüberliegenden Seiten). Die bekannteste davon, die auch standardmäßig mit jedem emacs mitgeliefert wird, ist dired (directory editor). Man startet dired über

M-x dired RET   oder   C-x d

wobei man in letzterem Falle noch das Startverzeichnis bekanntgeben oder RET drücken muß. Dired listet dann augenblicklich in einem eigenen buffer die Dateien und Verzeichnisse unterhalb des Startverzeichnisses auf, meist so wie "ls -alF" und hoffentlich auch in Farbe. Auf diesen Einträgen kann man eine Vielzahl an üblichen Datei- bzw. Verzeichnisoperationen ausführen. Erwähnt sei die Möglichkeit, auch mehrere Verzeichnisse untereinander in einem dired-buffer darzustellen, was oft sehr praktisch ist.

Shell in emacs

Es gibt zwei Implementierungen für shell-Betriebsarten unter emacs: shell und eshell.

M-x shell RET   oder   M-x eshell RET

Man kann nicht sagen, welche besser oder komfortabler sei - sie sind verschieden. Beide Varianten nehmen (wie in einem Terminal) an einem Prompt gewöhnliche Benutzereingaben entgegen, führen diese aus und stellen die Ausgaben wieder im gleichen buffer dar.

Der wesentliche Unterschied zwischen beiden Varianten ist, daß shell tatsächlich im Hintergrund eine default-sh des Benutzers startet, meist also bash, mit vorschriftsmäßiger Initialisierung, so daß also beispielsweise auch in .bashrc definierte Aliase gleich funktionieren, während eshell in Lisp programmiert ist und nur die eingegebenen Kommandos als externe Prozesse startet. Eshell kann deshalb auch einfach über Schließen des buffers (C-x k RET) beendet werden, während man in shell explizit exit schreiben oder Ctrl-D drücken muß, um den im Hintergrund laufenden sh-Prozeß zu beenden, und erst dann den buffer schließen darf.

Hey, man kann in eshell (nicht in shell) sogar vim starten! (Na, wenn das nicht etwas ist, auf das emacs-Benutzer lange gewartet haben ...)

Emacs als Entwicklungsumgebung

Man kann emacs hervorragend als Entwicklungsumgebung benutzen, sofern man unter "entwickeln" Quelltexte editieren, compilieren und debuggen meint. Emacs bietet für fast alle dieser Vorgänge hilfreiche Unterstützungen an, ohne daß man allerdings von echter Integration sprechen könnte. Der Vorteil liegt in der Offenheit in so ziemlich jeder Hinsicht.

Editieren

Das Editieren von Quelltexten findet in normalen Text-buffern statt. Emacs lädt verschiedene Modi, sobald er erkennt, daß es sich um eine Quelldatei eines bestimmten Typs handelt, um beispielsweise Syntax Highlighting und Indenting (sog. font-locking) durchzuführen. So wird bei Dateien mit der Endung .c oder .cc (.cpp, .c++, .cxx, .C, .h, .hpp, .H, ...) automatisch der cc-mode geladen, der C- und C++-Dateien farbig anzeigt. Ähnliches gilt für Java-, Lisp- oder XML- und unzählige andere Dateien.

Das Indenting (automatisches Einrücken) ist nicht jedermanns Sache. Es verwirrt auch leicht oder wird lästig, wenn es nicht den eigenen Gewohnheiten entspricht. Man kann es in gewissen Grenzen konfigurieren. Einige modes bieten die Möglichkeit, es ganz abzuschalten, beispielsweise der cc-mode: (c-syntactic-indentation nil).

Es macht sich sehr gut, wenn man einen dired buffer benutzt und darin die Quelldateien auflistet. Dann kann man sehr schnell von einer Datei zur anderen wechseln. Dired kann auch als Client für Versionskontrollsysteme (cvs, weitere?) benutzt werden.

Browser für Quellcode

Wer niveauvollere Möglichkeiten sucht, in seinen Quelltexten zu navigieren, dem stehen verschiedene Varianten zur Verfügung.

Wer gewohnt ist, mit tags (beispielsweise ctags) zu arbeiten, kann seine tags-Dateien unter emacs benutzen:

M-x tags-search RET   oder   M-x tags-apropos RET

emacs listet daraufhin alle Vorkommen des gesuchten tags in einem eigenen buffer auf, so daß man sie einfach durchlaufen kann.

Etwas anderes ist die Speedbar.

M-x speedbar RET

Die Speedbar ist ein (normalerweise separates) Fenster, das die aktuelle Quelldatei nach bestimmten Regeln parst und quasi ein dynamisches Inhaltsverzeichnis mit den darin gefundenen Klassen und Funktionen anzeigt. Die Speedbar erfordert überlicherweise keinerlei Konfiguration und zeigt sofort brauchbare Ergebnisse, um sehr schnell innerhalb der geöffneten Datei zu navigieren. Es gibt mehrere Versuche, die Speedbar ins aktuelle fenster zu integrieren, damit nicht ein separates Fenster auf dem Bildschirm geöffnet wird (siehe [[6]])

Compilieren

...

Debuggen

...

Emacs und (LA)TEX

(wer schreibt das?)

News und Mail in emacs

Emacs besitzt standardmäßig mehrere mail-Betriebsarten (mail, mh, rmail) unterschiedlichen Funktionsumfangs, sowie einen universalen mail/news/rss-Client in Lisp (Gnus). Letzterer ist die umfassendste Variante, erfordert aber auch die komplexeste Konfiguration sowie einige Übung im Umgang. Dafür erhält man eines der leistungsfähigsten Programme dieser Art auf der Welt (screenshots [[7]], [[8]]).


M-x mail RET

öffnet einen buffer, in dem man eine e-mail-Nachricht schreiben kann. Oben stehen ein paar Headerzeilen, die man ausfüllt, darunter der Text der Nachricht. Mit C-c C-c kann man diese Nachricht dann abschicken, wobei sie dem default-Programm zum Senden vom e-mail übergeben wird, wahrscheinlich sendmail, möglicherweise aber auch einer GUI-Applikation wie Thunderbird.


(wer kennt sich mit mh und/oder rmail aus? Ein paar Worte bitte ...)


M-x gnus RET

öffnet Gnus. man gelangt in den sog. group buffer, in welchem (ggf. thematisch sortiert) die news groups aufgelistet sind, die der Benutzer abboniert hat. Dort erscheinen auch seine e-mail-Postfächer sowie RSS-feeds. Jeweils neu eingetroffene Nachrichten werden hinter diesen Gruppen als Anzahl angezeigt und man kann durch RET in den summary buffer wechseln, um die Subjects und Poster der neuen Nachrichten zu sehen. Im summary buffer kann man wiederum RET drücken und gelangt in den article buffer, wo man die ausgewählte Nachricht lesen und auch beantworten kann.

Gnus kann POP3- und IMAP-Postfächer und selbst den Inhalt von Verzeichnissen auf der Festplatte abfragen, ist in der Lage, beim Senden und Empfangen verschiedene Verschlüsselungen anzuwenden und kann bedingt auch HTML rendern oder Artikel "waschen" (insbesondere solche, die von Outlook stammen). Gnus kann auch mit Hilfe des Gnus Agent als Offline-News-Reader eingesetzt werden. Dabei werden die Artikel lokal in einem Verzeichnis(baum) gespeichert. Gnus besitzt ausgeklügelte Filter- und Scoring-Möglichkeiten.

Der Leistungsumfang von Gnus ist so vielfältig, daß ihm ein eigenes Manual gewidmet ist [[9]]. Es lohnt sich, dieses Manual durchzuarbeiten, um die obligatorische Konfiguration durchführen zu können. Die resultierende Konfigurationsdatei .gnus ist zwar meist überschaubar, allerdings etwas knifflig in der Erstellung. Erschwert wird die Konfiguration dadurch, daß Gnus auf anderen Komponenten (message) aufbaut, die separat konfiguriert werden. Siehe ferner auch hier [[10]]

Internet in emacs

Eine sehr interessante Erweiterung für emacs ist das Lisp-Paket emacs-w3m [[11]], eine Schicht, die es erlaubt, den Textbrowser w3m in emacs laufen zu lassen, d.h. von emacs aus vollständig zu bedienen. Man muß dann emacs nicht mehr verlassen, um mal schnell eine Internetsuche durchzuführen.

emacs-w3m wird nicht mitgeliefert. w3m (der eigentliche Browser) und emacs-w3m können über pacman installiert werden:

pacman -Sy w3m emacs-w3m

Man muß anschließend sehr wahrscheinlich einen load-path in seine .emacs einfügen, damit emacs das Paket findet.

Man startet emacs-w3m über

M-x w3m RET

Emacs erweitern

Emacs ist offen für Erweiterungen in Lisp. Man kann entweder bestehende Lisp-Dateien und -Pakete hinzufügen oder selbst welche schreiben. Es existieren zahlreiche Verzeichnisse, auf denen man sehr interessante Pakete für die unterschiedlichsten Zwecke findet, besonders die Emacs Lisp List (ELL [[12]]), die seit vielen Jahren schon existiert und immer noch gepflegt wird.

Auf Unix-artigen Systemen wird man nicht im globalen Lisp-Verzeichnis Änderungen vornehmen wollen oder dürfen. Deshalb ist es ratsam, im home-Verzeichnis des Benutzers ein lokales Lisp-Verzeichnis anzulegen. Dieses ist in der .emacs mit einem load-path zu konfigurieren, damit emacs auch dort nach Lisp-Dateien sucht.

Es empfiehlt sich, die dort liegenden .el-Dateien in .elc-Dateien zu compilieren, um die Ausführung etwas zu beschleunigen.

Dokumentation

Emacs ist self documenting, d.h. in jedem Belang ausführlich dokumentiert. Diese Dokumentation ist jederzeit im Editor selbst abrufbar. Man startet sie über

C-h r

und gelangt in den emacs-eigenen Info-Browser. Den Umgang mit dem Info-System, einem Vorläufer von HTML, muß man etwas üben. Die dazu nötigen Tasten stehen am oberen Rand des buffers. Merken muß man sich vor allem u (up).


Es gibt auch eine FAQ-Liste, die man über

C-h C-f

erreicht.


Weitere Hinweise zur Bedienung gibt emacs selbst auf seinem Startbildschirm.

Links

Gnu Emacs Manual (entspricht den mitgelieferten Info-Seiten, nur hier in HTML) [[13]]

Gnu Emacs verwandte Seiten [[14]]

Emacs-Einsteiger-Dokumentation auf SelfLinux [[15]]

EmacsWiki [[16]]

Emacs Lisp List [[17]]

Eine Liste mit interessanten Erweiterungen (Lisp) [[18]]