Emacs-Modi sind unterschiedliche Verhaltensformen und Charakteristika,
die für unterschiedliche Zwecke an- und ausgeschaltet (oder natürlich
auch angepasst) werden können. Es sind Modi, die einen Editor (Emacs)
gleichermaßen gut verwendbar machen, sowohl Dokumentationen zu
schreiben, in einer Vielzahl von Sprachen (C, C++, Perl, Python, Java
und viele mehr) zu programmieren, eine Homepage zu erstellen, E-Mails
zu verschicken, Usenet News zu lesen, über die eigenen Termine auf dem
Laufenden zu bleiben und sogar Spiele zu spielen.
Emacs-Modi sind einfach Lisp-Code-Bibliotheken, die den Emacs auf
irgendeine Art und Weise erweitern, verändern oder optimieren.
Es gibt im Wesentlichen zwei Moditypen: Haupt- und Untermodi (Major
und Minor Modes). Der Unterschied ist nicht ganz einfach zu begreifen,
wenn man noch nicht hin und wieder mit einigen von ihnen gearbeitet
hat, aber versuchen wir es mal.
Zu einer bestimmten Zeit kann nur ein Hauptmodus aktiv sein. Es können
aber viele Untermodi zu einer bestimmten Zeit aktiv sein. Hauptmodi
tendieren dazu, sprach- oder funktionsspezifisch zu sein, während es
sich bei Untermodi um kleinere und weniger spezifische Einrichtungen
handelt, die funktionsübergreifend sind.
Klingt ein bisschen abstrakt, versuchen wir also ein Beispiel. Es gibt
einen Modus, den ich ziemlich oft benutze, um ganz normale Textdateien
zu schreiben. Er heißt text-mode. Dieser Modus wurde zum Schreiben
von freiem, unformatiertem Text entwickelt, wie einer README Datei. Er
kann Wörter und Absätze identifizieren und stellt im Allgemeinen
sicher, dass das passiert, was ich erwarte, wenn ich die normalen
Navigationstasten verwende.
Wenn ich einen Text als Lesefutter für den menschlichen Konsum
schreibe, will ich natürlich, dass er gut aussieht. Er sollte einen
passenden Zeilenumbruch haben - nach einer angemessenen Anzahl von
Zeichen und so weiter. Um Zeilenumbrüche zu ermöglichen, rufe ich
einfach den Untermodus auto-fill auf. Dieser Untermodus versucht,
das Richtige zu tun, während ich vor mich hintippe und das Ende der
Zeile erreiche. Die Tatsache, dass es ein Untermodus ist, bedeutet,
dass er mit einigen unterschiedlichen Hauptmodi arbeiten kann. Meine
Vorstellung davon, was das Richtige ist, wenn ich am Zeilenende bin,
ist eine andere, wenn ich in einem text-mode
bin oder zum Beispiel im java-mode.
Ich will nicht, dass mein Java-Code umgebrochen wird,
als wäre er ein englischer Text. Aber ich will meine Kommentarblöcke
in meinem Java-Code umgebrochen haben. Der auto-fill
Modus ist smart genug, das herauszukriegen
Die Entwickler verschiedener Emacs-Modi haben gute Arbeit geleistet,
in dem sie sicher gestellt haben, dass Dinge, die als Untermodi
arbeiten sollten, auch Untermodi sind.
Wenn Sie sich noch einmal die ASCII-Skizze eines Emacs-Bildschirmes
ansehen, werden Sie feststellen, dass die Moduszeile den/die
Modus/Modi anzeigt in dem/denen der Emacs sich befindet. In diesem
Fall hieß der Modus Lisp Interaction, der der Default-Modus ist. Er
ist wirklich nur sinnvoll, wenn man Lisp-Code schreiben will. Aber da
fast alles vom Emacs in Lisp geschrieben ist, warum nicht?
|
Zuallererst: der Emacs wurde von einem Programmierer für Programmierer
entwickelt. Es gibt hochwertige Modi für fast jede populäre
Programmiersprache, die man sich denken kann (und sogar einige nicht
ganz so populäre). Ich beschreibe nur wenige von ihnen kurz hier.
Die meisten Programmier-Modi teilen einige gemeinsame Charakteristika.
Normalerweise machen sie das Folgende ganz oder teilweise:
-
stellen eine farbliche Hervorhebung der Syntax für die Sprache zur Verfügung,
-
stellen automatischen Texteinzug und Code-Formatierung für die Sprache zur Verfügung,
-
verfügen über eine kontext- (sprach-)sensitive Hilfefunktion,
-
verfügen über ein automatisches Interface mit Ihrem Debugger,
-
ergänzen die Menuezeile durch sprachspezifische Menues.
Zusätzlich gibt es einige nicht-sprachspezifische Modi, die Funktionen
unterstützen, die beim Programmieren in vielen Sprachen häufig
vorkommen: Dinge wie eine Schnittstelle zu Ihrer
Versionskontrollsoftware, automatisches Anfügen von Kommentaren an
Ihren Code, Erstellen von Makefiles, Aktualisieren von Change Logs und
so weiter.
Wenn man all diese Modi zusammen nimmt und die Reife und Stabilität
des Emacs-Codes berücksichtigt, fällt der Vergleich mit kommerziellen
Integrated Development Environments (IDEs) für Sprachen wie C++ und
Java doch ziemlich gut aus. Und er ist natürlich frei verfügbar.
Da die Syntax von C, C++ und Java ziemlich ähnlich ist, gibt es einen
Emacs-Modus für alle drei Sprachen (aber auch für Objective-C und
IDL). Es ist ein sehr ausgereiftes und vollständiges Paket und in der
Emacs-Distribution enthalten. Dieser Modus wird entweder cc-mode
oder CC Mode genannt.
Für weitere Details oder den Download einer neueren Version, besuchen
Sie:
http://www.python.org/emacs/
|
Es gibt eigentlich zwei Modi, um Perl-Code im Emacs zu editieren. Der
erste heißt perl-mode (wie wohl zu erwarten war) und der zweite
cperl-mode. Ich kenne mich in dieser Geschichte nicht gut aus und
weiß nicht, warum es zwei Modi gibt (steht nicht in der Doku), aber es
scheint so, als ob perl-mode der Original-Modus war, um Perl-Code im
Emacs zu editieren. Er scheint über weniger Merkmale als cperl-mode
zu verfügen und es mangelt ihm an der Fähigkeit, einige von Perls
ausgefalleneren Sprachkonstrukten zu erkennen.
Ich persönlich benutze und empfehle cperl-mode, der anscheinend
ziemlich aktiv gepflegt wird und genau all die Charakteristika hat,
die ich mir überhaupt nur wünschen kann. Die neueste Version findet
man hier:
ftp://ftp.math.ohio-state.edu/pub/users/ilya/emacs
Aber nehmen Sie mich nicht beim Wort. Probieren Sie beide aus und
nehmen Sie den, der am meisten Ihren Bedürfnissen entspricht.
|
Für Python (eine weitere sehr populäre Skript-Sprache) gibt es auch
einen Emacs-Modus. So weit ich weiß, ist er nicht in der GNU Emacs,
sondern in der XEmacs-Distribution enthalten. Er funktioniert aber
recht gut in beiden Editoren.
Sie können den python-mode von der offiziellen Python-Website
beziehen:
http://www.python.org/emacs/python-mode/
|
Es gibt viele, viele andere Editier-Modi zur Unterstützung von
Programmierern. Diese Modi helfen bei Dingen wie:
-
Shell Skripte (bash, sh, ksh, csh usw)
-
awk, sed, tcl usw.
-
Makefiles
-
Change Logs
-
Dokumentation
-
Debugging
und vielen weiteren Dingen. Wenn Sie mehr Informationen dazu möchten,
wie man an Modi und Add-Ins kommt, gehen Sie zum letzten Abschnitt
dieses Dokuments.
|
|
Stellen Sie sich vor, Emacs-Modi sind nicht nur auf die beschränkt,
die Code schreiben. Leute die Dokumentationen jeglicher Art schreiben,
können auch von einer breiten Auswahl an Emacs-Modi profitieren.
Autoren vieler Arten von Dokumenten brauchen immer wieder mal eine
Hilfe bei der Rechtschreibprüfung. Wenn sie GNU ispell installiert
haben, können Sie
M+x
ispell
eintippen und den aktuellen Puffer auf
seine Rechtschreibung hin überprüfen lassen. Wenn ispell Wörter
findet, die er nicht kennt, bekommt man eine Liste möglicher Varianten
und kann sich eine oder keine aussuchen. Die Funktion entspricht in
etwa der Rechtschreibkorrektur vieler anderer nicht kostenloser
Softwarepakete.
|
Wenn Sie immer wieder mal oder sogar oft HTML-Dateien schreiben,
möchten Sie vielleicht den html-helper-mode ausprobieren. Man bekommt
ihn unter
http://www.santafe.edu/~nelson/tools/
wie auch die Dokumentation und was damit zu tun hat.
Wie der Namen schon andeutet, kann der html-helper-mode viel für die
Leute tun, die noch HTML mit der Hand schreiben, auf die altmodische
Art.
|
Wenn man Dokumente in TeX schreibt, ist es oft hilfreich, sich den
Emacs zu besorgen, um etwas Farbe hinzuzufügen, um die Backslashes,
Klammern und andere Buchstaben hervorzuheben. Der tex-mode macht das
für Sie.
Obwohl ich nicht mehr viel direkt in TeX schreibe, hat er sich, als
ich es noch tat, als ziemlich hilfreich dabei erwiesen, meinen
TeX-Code etwas lesbarer zu machen.
|
Das Dokument, das sie gerade lesen, wurde in SGML geschrieben und in
das Format konvertiert, in dem sie es lesen. Der sgml-mode hat alle
Grundlagen für SGML Dokumente: Validierung, Hervorhebung, Forward-Tag,
Backward-Tag, und vieles mehr. Er ist ein Standardbestandteil des
Emacs.
|
|
Natürlich gibt es noch viele andere praktische Modi, die das Leben
einfacher machen. Hier folgt nur eine kleine Auswahl der populären:
Der vc Modus hat Schnittstellen zu den meisten der populären
Versionskontrollsysteme (RCS, SCCS, CVS). Dies macht es sehr leicht,
Dateien ein- und auszuchecken, Releases zu managen etc. Er ist ein
Standardbestandteil des Emacs und wird in der Emacs-Dokumentation
beschrieben.
|
Warum zu einem anderen X Window Fenster oder einer virtuellen Konsole
wechseln, nur um ein paar Shell-Kommandos auszuführen? Machen Sie es
vom Emacs aus und ersparen Sie sich die Mühe :-).
M+x
shell
ruft eine Shell innerhalb eines Emacs-Puffers auf. Mit
diesem Puffer kann man die meisten Sachen machen, die man auch mit
einem normalen Shell tun könnte (außer dem Betrieb von Programmen, die
den ganzen Bildschirm einnehmen, wie vi oder pine), weil der Emacs
hinter den Kulissen mit der wirklichen Shell kommuniziert.
Auch dies ist ein Standardbestandteil des Emacs, so dass man ihn in
der Emacs-Dokumentation dokumentiert findet.
|
Warum zu einem anderen X Window Fenster oder einer virtuellen Konsole
wechseln, nur um Telnet und FTP auszuführen? Machen Sie es vom Emacs
aus und ersparen Sie sich die Mühe.(Erkennen Sie schon das Muster ;-)?
Genau wie eine Shell im Emacs zu betreiben, kann man von ihm aus mit
Telnet und FTP arbeiten. Versuchen Sie
M+x
telnet
oder
M+x
ftp
, um
es selbst auszuprobieren. Lesen Sie die Dokumentation wegen all der
blutrünstigen Details.
|
Warum zu einem anderen X Window Fenster oder einer virtuellen Konsole
wechseln, nur um eine Manual Page zu lesen? Machen Sie es vom Emacs
aus und ersparen Sie sich die Mühe. Ich verspreche, ich höre jetzt
auf.
Genau wie beim Betreiben der Shell innerhalb des Emacs, kann man vom
Emacs aus Manual Pages lesen. Versuchen Sie
M+x
man
um es selbst
auszuprobieren. Lesen Sie die Dokumentation, wenn Sie weitere
Informationen möchten.
|
Um die ange-ftp Dokumentation zu zitieren:
Dieses Paket will den Zugang zu Dateien und Verzeichnissen
für die Nutzung von FTP vom GNU Emacs aus so einfach und
transparent wie möglich machen. Ein Teil der gebräuchlichen
Dateiarbeitsvorgänge ist für die Interaktion mit FTP
erweitert worden.
Dies bedeutet, dass man Dateien auf weit entfernten Rechnern behandeln
kann, als wären sie lokal. Will man also eine Datei auf einem anderen
Computer editieren, muss man nur den Emacs anweisen, sie zu öffnen (in
dem man eine etwas andere Pfadsyntax benutzt) und er kümmert sich um
alle Details beim Login und dem Holen der Datei. Dann, wenn die Datei
mit
C+x
C+s
gespeichert wird, nimmt ange-ftp die Speicherung vor und
schreibt die Datei zurück auf den weit entfernten Rechner.
Die etwas andere Pfadsyntax geht so: Eine myfile benannte Datei in
einem user Verzeichnis auf einem my.host.org benannten Rechner kann
durch
C+x
f
geöffnet werden:
/user@my.host.org:~user/myfile
Auch dies ist ein Standardbestandteil der Emacs-Distribution, sodass
man es in der Emacs Dokumentation dokumentiert findet.
Meinen Dank an Etienne
Grossman ( etienne@anonimo.isr.ist.utl.pt) für das obige Beispiel.
|
|
|