Emacs: Unterschied zwischen den Versionen

Aus wiki.archlinux.de
Zeile 48: Zeile 48:




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 Bgriffe erinnert als an Tastenkombinationen.
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.
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.





Version vom 20. August 2009, 09:48 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.) Diese Präsentation [[1]] gibt einen guten Überblick.

Emacs wurde 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.


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, muss 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 dass 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)

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 dass 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, 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 [[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

...

Ü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, 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.

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

Editieren

...

Browser für Quellcode

...

Compilieren

...

Debuggen

...

Emacs und (LA)TEX

(wer schreibt das?)

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 [[6]], [[7]]).


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, dass ihm ein eigenes Manual gewidmet ist [[8]]. 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 [[9]]

Internet in emacs

Eine sehr interessante Erweiterung für emacs ist das Lisp-Paket emacs-w3m [[10]], 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.

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

pacman -Sy w3m emacs-w3m

Man muss anschliessend 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

...

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, muss man etwas üben. Die dazu nötigen Tasten stehen am oberen Rand des buffers. Merken muss 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) [[11]]

Gnu Emacs verwandte Seiten [[12]]

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

EmacsWiki [[14]]

Emacs Lisp List [[15]]

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