next up previous contents index
Next: Werkzeuge für die Softwareentwicklung Up: C++-Entwicklung mit Linux Previous: Fortgeschrittenes C++   Contents   Index

Subsections


Editoren für die Programmierung

Am Anfang eines C++-Programms steht eigentlich immer ein lesbarer Text. Wenn dieser nicht gerade von einem Werkzeug automatisch generiert wurde, hat ihn höchstwahrscheinlich ein menschlicher Programmierer eingetippt. Und zu dieser Eingabe benötigt er - ebenso wie Sie und ich - einen Editor. Ich will Ihnen in diesem Kapitel drei Editoren vorstellen, mit denen Sie kleine und größere Programme schreiben können. Im übernächsten Kapitel stelle ich Ihnen dann integrierte Entwicklungsumgebungen vor, die meist auch über einen eigenen Editor verfügen, ansonsten aber sehr viel mehr können, als nur mit Texteingaben umzugehen.

Bereits in Kapitel 2 habe ich Sie (ab Seite [*]) auf einen Editor hingewiesen, nämlich NEdit. Hier werden Sie einige weitere Editoren kennen lernen:

Wie kaum ein anderes Werkzeug ist der Editor die Schnittstelle zwischen dem Menschen und dem Rechner. Programmierer dürften sogar den überwiegenden Teil Ihrer Arbeitszeit mit dem Editor verbringen. Es ist daher nicht verwunderlich, dass Sie auf die Frage nach dem richtigen Editor mindestens so viele Antworten erhalten wie die Zahl der Befragten. Jeder hat seinen persönlichen Arbeitsstil, den er bei einem Editor besser unterstützt sieht als bei einem anderen. Letztlich sollten Sie also zunächst versuchen, sich vorurteilsfrei verschiedene Editoren anzusehen und ein wenig mit diesen zu arbeiten, um schließlich herauszufinden, mit welchem Sie am besten zurecht kommen.

Sie finden die Editoren in ihrer aktuellsten Form unter den angegebenen Web-Adressen. Außerdem können Sie sie auch von der beiliegenden CD-ROM installieren.


vi improved

Unter Unix ist vi ein urzeitliches Geschöpf. Er war dort einer der ersten Editoren, die nicht auf eine Zeile fixiert waren (wie etwa ed), sondern mit dem man den ganzen Bildschirm nutzen und beliebig hin und her fahren konnte. Im Zeitalter der bunten Fensteroberflächen haben sich jedoch viele von ihm abgewandt; junge Leute befassen sich erst gar nicht mehr damit. Dabei ist er durchaus ein mächtiges Werkzeug, mit dem Sie - sofern Sie etwas geübt sind - schnell und kompakt spezifische oder systematische Änderungen an einer Datei vornehmen können.

Heute kann man nicht mehr von einem vi-Editor sprechen. Gerade unter Linux gibt es eine ganze Reihe von vi-Klonen mit mehr oder weniger ähnlichen Features. Gegenüber der Urversion sind sie alle deutlich verbessert, halten aber an den grundlegenden Konzepten und Kommandos fest. In jeder Linux-Distribution (ebenso wie in jeder kommerziellen Unix-Version auf anderen Plattformen) ist mindestens ein vi-Editor enthalten. Mit anderen Worten: Selbst auf Systemen, auf denen Sie keinen anderen Ihnen bekannten Editor vorfinden, gibt es einen vi. Ich bin daher der Meinung, dass jeder ernsthafte Unix-Benutzer und erst recht jeder Unix-Programmierer in der Lage sein sollte, mit dem vi-Editor umzugehen.

In den folgenden Abschnitten will und kann ich Ihnen nur die wichtigsten Kommandos vorstellen. Der vi ist ein recht leistungsfähiger Editor, der noch über eine ganze Reihe weiterer Möglichkeiten verfügt. Diese finden Sie etwa in [LAMB 1992]. Ein Tutorial zum vi gibt es auch unter ftp://ftp.mines.colorado.edu/pub/tutorials.

Die wohl verbreitetste Variante ist VIM, der vi improved. Dieser hat eine eigene Website namens www.vim.org. Den VIM werden wir im Folgenden auch verwenden. Er hat gegenüber der Urversion unter anderem den Vorteil, dass man im Bearbeitungsmodus auch mit dem Cursor hin- und herfahren kann und an einer anderen Stelle mit der Bearbeitung weitermachen kann. Viele Linux-Distributionen richten ihn als vi-Editor ein, das heißt, sie legen /bin/vi als symbolischen Link an, der auf /usr/bin/vim zeigt.

Den vi-Klon elvis können Sie von ftp://ftp.cs.pdx.edu/pub/elvis beziehen. Auf der VI lover's home page (www.cs.vu.nl/~tmgil/vi.html) gibt es eine Liste, die diese beiden und fast alle weiteren Klone enthält. Einen Vergleich zwischen verschiedenen Implementierungen gibt es bei www.math.fu-berlin.de/~guckes/vi/features.html.

Starten und Beenden

Mit vi arbeiten Sie im Shell-Fenster (beziehungsweise im Shell-Bildschirm, wenn Sie kein X-Window laufen haben). Aktionen mit der Maus sind dabei generell nicht möglich; alle Benutzerinteraktionen laufen über die Tastatur.

Von der Shell-Eingabeaufforderung aus rufen Sie den Befehl vi, gefolgt von einem Dateinamen auf, zum Beispiel:

vi prog.cc

Damit laden Sie die Datei prog.cc in den Editor, so dass Sie sie bearbeiten können. (Wenn Sie dem Dateinamen ein + voranstellen, wird der Cursor nach dem Laden nicht am Anfang, sondern am Ende der Datei positioniert.) Ist keine Datei dieses Namens im angegebenen Verzeichnis vorhanden, geht das Programm davon aus, dass Sie eine neue Datei anlegen wollen.

Nach dem Laden erhalten Sie in der untersten Zeile die Informationen, welche Datei Sie gerade geöffnet haben, wie viele Zeilen und wie viele Zeichen sie hat und ob sie schreibbar oder readonly ist (Abbildung [*]). Diese Angaben verschwinden aber nach einiger Zeit. Dauerhaft können Sie hingegen bei vielen vi-Versionen in der rechten unteren Ecke die Nummer der Zeile und Spalte lesen, in der sich der Cursor gerade befindet.

Figure: Der vi-Editor wird im Shell-Fenster betrieben.



\includegraphics{images/vi.eps}

Die häufigste Frage aller Anfänger mit vi lautet: Wie komme ich hier wieder raus?. Daher gleich die Antwort: Zum Beenden von vi haben Sie zwei Möglichkeiten:

(Alle Tastendrücke jeweils unmittelbar hintereinander.) Es gibt noch Alternativen dazu, doch für den Anfang genügt es, wenn Sie sich diese beiden Tastenfolgen einprägen.

Die Bearbeitungsmodi

Der vi-Editor kennt drei verschiedene Modi:

Eine Übersicht über die verschiedenen Modi zeigt Abbildung [*].

Figure: Von einem Modus zum anderen gelangt man durch verschiedene Tasten.



\resizebox*{1\columnwidth}{!}{\includegraphics{/usr/homes/thomas/cpp/cpp_linux/Text/images/vi_modi.eps}}



Während der Letzte-Zeile-Modus sofort dadurch ersichtlich ist, dass eben die letzte Zeile aktiviert ist, erkennen Sie durch Betrachten des Bildschirms im Allgemeinen nicht, ob Sie sich gerade im Kommando- oder im Eingabemodus befinden. Einzig die Art, wie der Editor auf Ihre Tastendrücke reagiert, weist Sie darauf hin. Ein fröhliches Drauflostippen wie bei den meisten anderen Editoren gibt es im vi demnach nicht. Wenn das Programm einzelne Buchstaben Ihres Textes nicht gerade als Kommandos interpretiert, werden Sie nur Warntöne aus ihrem Lautsprecher hören. Aber lassen Sie sich davon nicht entmutigen - das geht allen vi-Anfängern so. Nach kurzer Zeit werden Sie das Wechseln zwischen den Modi begriffen haben und ganz selbstverständlich damit umgehen.

Bewegen des Cursors

Bedenken Sie, dass ein Bewegen des Cursors im Allgemeinen nur im Kommandomodus möglich. Einige vi-Versionen erlauben es zwar auch während des Einfügens; dabei dürfen Sie aber nur die Cursortasten verwenden.

Im Kommandomodus können Sie den Cursor durch folgende Tasten bewegen:

Eine Besonderheit des vi-Editors besteht darin, dass Sie vor beinahe allen Kommandos erst eine Zahl eingeben können und dass dann das Kommando in dieser Häufigkeit oder mit dieser Zeilennummer ausgeführt wird. Beispielsweise bedeuten

Mit den anderen Positionierungsbefehlen funktioniert diese Technik ganz analog.

Text schreiben und löschen

Mit den folgenden Tastendrücken wechseln Sie aus dem Kommando- in den Eingabemodus. Um wieder zurückzukehren, müssen Sie die Esc-Taste betätigen.

Wenn Sie sich vertippt haben, können Sie mit $\longleftarrow$ die Einfügemarke wieder ein Stück zurücksetzen. Wenn Sie aber mehr als ein paar Buchstaben korrigieren wollen, empfehle ich Ihnen, den Eingabemodus zu verlassen, das entsprechende Textstück zu löschen und anschließend neu zu schreiben.


Änderungen rückgängig machen

Eine andere Möglichkeit der Korrektur besteht im Rückgängigmachen von Änderungen. Dazu gibt es verschiedene Tastenkombinationen:

Wenn Sie mit Ihren Eingaben oder Änderungen jedoch allzu weit in die falsche Richtung gekommen sind, ist es mit einem einfachen Rückgängigmachen meist nicht mehr getan. Am besten beenden Sie dann den Editor mit :, q, !, wodurch alle ungespeicherten Änderungen der gegenwärtigen Sitzung dem Vergessen anheim fallen.


Text löschen

Im Kommandomodus stehen Ihnen verschiedene Befehle zum Löschen von Text zur Verfügung:

Auch beim Löschen kann es recht praktisch sein, die Zahl der Wiederholungen des Befehls zuvor anzugeben. Wenn Sie etwa 8, x eingeben, so löschen Sie damit die nachfolgenden acht Zeichen.

Wenn Sie ganz spezifisch Zeilen über deren Nummern löschen wollen, erledigen Sie dies am besten im Letzte-Zeile-Modus. Dorthin wechseln Sie aus dem Kommandomodus durch die Taste :. Dort geben Sie an:

:<startzeile><endzeile> d

Dabei können Sie entweder die Nummern der Zeilen angeben oder statt der Endzeile auch $, was das Ende der Datei repräsentiert. Wenn Sie also beispielsweise von Zeile 57 bis zum Dateiende alle Zeilen löschen wollen, müssen Sie eingeben:

:57,$ d

Suchen und Ersetzen

Um nach einem Begriff zu suchen, drücken Sie im Kommandomodus die Taste / und geben unmittelbar danach den gesuchten Ausdruck ein. Die Suche starten Sie dann mit der Eingabetaste. Existiert der von Ihnen gesuchte Begriff in der Datei nicht, können Sie die Fehlermeldung Pattern not found! lesen. Ansonsten springt der Cursor zum nächsten Vorkommen der eingegebenen Buchstabenfolge.

Wenn Sie danach ein weiteres Vorkommen suchen möchten, müssen Sie nur auf die Taste n drücken. Wenn Sie dagegen die Suche in die andere Richtung fortsetzen wollen, ist es $\Uparrow$+n.

Die meisten vi-Klone fahren am anderen Ende der Datei mit der Suche fort, wenn bis dahin nichts Passendes gefunden werden konnte.

Um Textstellen nicht nur aufzuspüren, sondern auch gleichzeitig zu ersetzen, müssen Sie den Letzte-Zeile-Modus verwenden:

Meistens wollen Sie aber solche Ersetzungen nicht nur auf die aktuelle Zeile, sondern auf den Gesamttext beziehen. Ähnlich wie zum Löschen können Sie auch beim Ersetzen einen Zeilenbereich angeben, auf den das Kommando wirken soll:

Nach Bedarf können Sie auch bei dieser Form die Schalter g für global oder c für confirm hinzunehmen oder weglassen.

Um beispielsweise alle Vorkommen der Buchstaben Win durch Linux zu ersetzen, geben Sie ein:

:1,$ s/Win/Linux/g

Speichern und Laden

Der vi-Editor lädt den Text bereits zu Anfang in einen Speicherpuffer. Gerade bei umfangreichen Dateien kann dies etwas Zeit in Anspruch nehmen. Dieses Konzept hat aber auch zur Folge, dass Änderungen zunächst nur in diesem Puffer vorgenommen werden. Erst durch einen ausdrücklichen Speicherbefehl werden sie auch in der Datei auf der Festplatte wirksam. Ein automatisches Speichern gibt es beim vi nicht.

Wie oben erwähnt, können Sie mit der Tastenkombination $\Uparrow$+z, $\Uparrow$+z den Text speichern und anschließend gleich das Programm verlassen. Die anderen Speicherbefehle können Sie im Letzte-Zeile-Modus eingeben:

Wenn Sie also etwa nur die Zeilen 57 bis zum Dateiende in ein File mit dem Namen text57.data abspeichern wollen, geben Sie ein:

:57,$ w text57.data

Manchmal verweigert der vi-Editor das Abspeichern mit dem Hinweis auf die Schreibberechtigung. Wenn Sie selbst genügend Rechte an der Datei und dem Verzeichnis haben, können Sie in diesem Fall das Abspeichern erzwingen, indem Sie hinter das w noch ein Ausrufezeichen ! setzen.

Zum Laden von Text gibt es zwei Varianten:

Kopieren und Verschieben

Wenn Sie Text mit dem vi-Editor kopieren oder verschieben wollen, müssen Sie ihn zunächst im Puffer ablegen. Anschließend können Sie ihn dann an der Cursorposition einfügen.

Text im Puffer speichern

Eine einfache Möglichkeit zum Ablegen von Text im Puffer ist das Löschen. Denn bei jedem Löschvorgang werden die gelöschten Zeichen im Puffer zwischengespeichert. Wenn Sie Ihren Textabschnitt also nur verschieben wollen, löschen Sie ihn zunächst und fügen ihn dann an der gewünschten Position wieder ein.

Sie \resizebox{10mm}{!}{\includegraphics{images/vorsicht.eps}} müssen aber unbedingt darauf achten, zwischen dem Löschen und dem Einfügen keinen anderen Editierbefehl zu verwenden. Der Puffer hat standardmäßig nur einen Inhalt und dieser wird bei jedem Vorgang überschrieben. Mit etwas Disziplin stellt das aber kein großes Problem dar.

Zum Kopieren in den Puffer können Sie die folgenden Kommandos verwenden:

Zum Beispiel können Sie mit y, f, ; alle Zeichen bis zum nächsten ; kopieren.

Text einsetzen

Dafür gibt es im Wesentlichen zwei Befehle:

Diese Befehle können Sie auch mehrfach hintereinander ausführen. Dadurch setzen Sie den Text aus dem Puffer mehrmals ein.

Weitere Befehle

Der vi-Editor verfügt noch über viele weitere Befehle, von denen ich Ihnen hier nur noch vier recht praktische vorstellen will:

Zusammenfassung

Haben Sie keine Scheu, etwas mit dem vi-Editor zu spielen. Stellen Sie sich eine Kopie einer mittelgroßen Textdatei her, damit kein Schaden entstehen kann, und versuchen Sie, die Bearbeitungsvorgänge durchzuführen, die ich Ihnen in diesem Kapitel gezeigt habe. Gerade wenn Sie bislang vorwiegend mit Fensteroberflächen gearbeitet haben, kommt Ihnen die spartanische Umgebung des vi-Editor anfangs sicherlich sehr ungewohnt vor. Nach einiger Zeit, glaube ich, werden Sie die Möglichkeiten dieses Werkzeugs gut einschätzen und zu passender Gelegenheit auch verwenden können - wenn auch nicht gerade zum Programmieren.


Der XEmacs-Editor

Beim Emacs kann man eigentlich schon nicht mehr nur von einem Editor sprechen. Denn durch seine ebenso offene wie leistungsfähige Programmierschnittstelle hat der Emacs im Laufe der Zeit so viele Erweiterungen erhalten, dass Sie außer ihm fast keine andere Anwendung mehr brauchen.

Wenn wir von Emacs sprechen, müssen wir zwischen zwei ähnlichen, aber mittlerweile unabhängigen Programmen unterscheiden: Da ist zum einen GNU Emacs (siehe org.gnu.de/software/emacs). Es war eines der ersten Programme des GNU-Projekts überhaupt und wurde von dessen geistigen Vater, Richard Stallman, selbst entwickelt. (Er ist ja auch heute noch Präsident der Free Software Foundation, FSF, und einer der glühendsten Verfechter des Prinzips der freien Software - siehe auch Seite [*].) GNU Emacs läuft sowohl im Shell-Fenster unter X-Window, wo er bereits eine Reihe von Mausoperationen unterstützt und Menüs bietet, als auch auf einem ganz einfachen Terminal. Dort bringt er dem Anwender besonderen Nutzen, erlaubt er doch beispielsweise die gleichzeitige Anzeige mehrerer Dateien.

Nach einiger Zeit bildete sich eine Gruppe von Programmierern, die auf der Basis des GNU Emacs eine echte X11-Anwendung entwickeln wollten. Diese nannten sie dann XEmacs (siehe www.xemacs.org). Allerdings gibt es zwischen den XEmacs-Entwicklern und Richard Stallman eine Reihe von Meinungsverschiedenheiten, die dazu führten, dass GNU Emacs und XEmacs zwei getrennte Programme auf unterschiedlicher Codebasis sind. Die Grundfunktionalitäten einschließlich der Tastaturkürzel sind jedoch dieselben.

Wenn Sie noch nie mit einem Emacs-Editor gearbeitet haben und auch ansonsten eher grafische Benutzeroberflächen gewohnt sind, kann ich Ihnen nur zum XEmacs raten. Er wird für Sie leichter zu bedienen und intuitiver zu durchschauen sein als der GNU Emacs. Aus diesem Grunde werde ich mich auch in diesem Buch auf den XEmacs beschränken. Aber wie gesagt: Das meiste gilt auch für den GNU Emacs in gleicher Weise. Die Emacs-Editoren sind so mächtige Werkzeuge, dass ich Ihnen in diesem Rahmen nur ein paar sehr elementare Bedienungsschritte vorstellen kann. Wenn Sie mehr erfahren wollen, empfehle ich Ihnen das Standardwerk [CAMERON . 1996].

Höchstwahrscheinlich ist der XEmacs in Ihrer Linux-Distribution enthalten. Obwohl es an ihm auch immer wieder Weiterentwicklungen gibt, werden Sie vermutlich kein Update brauchen - er verfügt über so viele Funktionen, dass Sie die meisten davon ohnehin kaum nutzen werden. Wenn Sie ihn aus den Quellen selbst kompilieren und installieren wollen, folgen Sie einfach den Anweisungen in der beigelegten Datei INSTALL.

Grundlegende Befehle

Sie rufen den XEmacs-Editor einfach mit seinem Namen auf:

xemacs

Als Argument dahinter können Sie unter anderem den Namen einer Datei angeben, die Sie editieren möchten. Der erste Fensterinhalt, der nach dem Aufruf erscheint, gibt Ihnen nicht nur Programmnamen und Versionsnummer an, sondern zeigt Ihnen auch gleich einige der wichtigsten Kommandos. Um dann mit der Arbeit zu beginnen, klicken Sie einfach in das Fenster.

Aufbau des Fensters

Anschließend haben Sie entweder den Skizzenpuffer scratch vor sich, der unter anderem so etwas wie eine editierbare Zwischenablage ist, oder gleich die von Ihnen in der Kommandozeile angegebene Datei. Ihr Fenster könnte dann etwa wie Abbildung [*] aussehen.

Figure: Mit dem XEmacs können Sie Ihre Dateien und Programme nach Herzenslust bearbeiten.



\includegraphics{images/xemacs.eps}

Unterhalb der Menüleiste ist eine Werkzeugleiste, wie Sie sie sicherlich von vielen (MS-)Windows-Anwendungen kennen. Am unteren Rand des Fensters befindet sich zuerst eine Statuszeile, wo Sie den Dateinamen, den Typ der Datei und noch einige weitere Informationen ablesen können. So weisen die Striche auf der linken Seite beispielsweise darauf hin, ob die Datei modifiziert wurde oder nicht: - bedeutet unverändert, ** heißt modifiziert und %% steht bei Dateien, für die Sie lediglich Lese-Rechte haben.

Darunter folgt noch eine letzte Zeile, die so genannte echo area. Dort finden Sie u.a. Meldungen des Editors und werden zu Eingaben aufgefordert.


Bewegung des Cursors

Die Emacs-Editoren verfügen aus der Sicht eines Anfängers über endlos viele Befehle. Wenn Sie die Dokumentation etwas studieren, werden Sie schnell das Gefühl bekommen, zum Erlernen Jahre zu brauchen. Das muss aber gar nicht sein. Denn die elementaren Handgriffe sind ganz einfach erledigt; nur für spezielle Aufgaben benötigen Sie etwas fortgeschrittene Kenntnisse. (Außerdem bietet Ihnen gerade der XEmacs für viele Befehle mehrere Alternativen, von denen eine meist über das Menü erreichbar ist.)

Mit der Bewegung des Cursors ist es ähnlich. Wenn Sie ihn um ein Zeichen nach rechts oder links beziehungsweise um eine Zeile nach oben oder unten bewegen wollen, klappt das am einfachsten mit den Pfeiltasten. Natürlich können Sie auch mit der Maus an eine Stelle klicken, um den Cursor dort zu platzieren.

Auf die Dauer wird Ihnen die Bewegung um nur einen einzelnen Schritt zu wenig sein. Dann können Sie Strg+$\leftarrow$ und Strg+$\rightarrow$ drücken, womit Sie um ein Wort nach links beziehungsweise rechts springen können. Strg+Pos1 bringt Sie an den Anfang, Strg+Ende an das Ende der Datei.

Eine der Besonderheiten des Emacs zeigt sich darin, dass er bei jedem Dateityp unterschiedliches Verhalten an den Tag legt und unterschiedliche Befehle kennt. Diese typabhängigen Einstellungen bezeichnet man als Modus; wir werden auf Seite [*] noch genauer darüber sprechen. Diese für Windows-Anwender sehr ungewohnte Verhaltensweise ist eine seiner großen Stärken, denn damit können die wichtigsten Bearbeitungsfälle eines jeden Typs optimal unterstützt werden.

Konsequenterweise hängen auch die Funktionen einiger Tastenkombinationen vom Typ der Datei ab, die Sie gerade editieren; das heißt, sie haben etwa bei einem C++-Programm eine andere Bedeutung als bei einem normalen Text. Dazu gehören etwa Alt+a und Alt+e. In einem Text springen Sie damit an den Anfang oder an das Ende eines Satzes; im Programm an Anfang oder Ende der Anweisung. Mit Alt+$\leftarrow$ und Alt+$\rightarrow$ können Sie sogar bei größeren, von { und } eingerahmten Blöcken den Cursor an deren Anfang und Ende bringen.

Ähnlich ist es mit der Tab-Taste. In normalem Text fügt sie einen Sprung zur nächsten Tabulatorposition ein, die alle acht Zeichen angelegt sind. In C++-Programmen sorgt diese Taste dafür, dass die aktuelle Zeile korrekt eingerückt wird; das bedeutet, dass alle Anweisungen im selben Block auch in derselben Spalte beginnen. Öffnen Sie mit { einen neuen Block, so werden die Anweisungen darin um zwei Zeichen gegenüber dem umschließenden Block nach rechts eingerückt. Somit können Sie stets die Zugehörigkeit einer Anweisung zu ihrem Block auf Anhieb erkennen. Ein einmaliges Drücken auf die Tab-Taste genügt dabei. Der Cursor kann währenddessen in einer beliebigen Spalte dieser Zeile (innerhalb des Blocks) stehen. Wenn Sie die Taste anschließend nochmals betätigen, ändert sich nichts mehr.


Löschen von Text

Im Gegensatz zum vi-Editor können Sie im XEmacs jederzeit Text eingeben (wenn Sie sich nicht gerade im Kommandomodus mit dem Cursor in der untersten Zeile befinden). Darüber müssen wir also nicht weiter sprechen. Kommen wir daher zum Entfernen von Text. Neben der Rücktaste und der Entf-Taste, welche die Zeichen vor beziehungsweise hinter dem Cursor löschen, können Sie auch Alt+Rücktaste und Alt+Entf verwenden, die das Wort vor beziehungsweise hinter dem Cursor löschen.

Um eine ganze Zeile zu entfernen, verwenden Sie die Tastenkombination Strg+k. Beachten Sie aber: Bei einmaligem Drücken löschen Sie den Inhalt der Zeile ab der Cursorposition bis zum Ende. Wenn Sie die Zeile ganz entfernen wollen, müssen Sie ein zweites Mal Strg+k betätigen.

XEmacs speichert die Zeichen zwischen, die Sie löschen. Sie können diese an derselben oder einer anderen Stelle wieder in den Text einfügen, indem Sie das Tastenkürzel Strg+y verwenden. Bei ganzen Zeilen ist das nur der Inhalt der Zeile, den Sie mit dem ersten Strg+k entfernt haben; denn einzelne Zeichen oder Zeilenumbrüche werden nicht zwischengespeichert.

Puffer

Für jede Datei verwaltet XEmacs einen Puffer (auf Englisch buffer). Abhängig von dem Typ der darin bearbeiteten Datei werden die Puffer zu Gruppen zusammengefasst. Zwischen den verschiedenen Puffern können Sie mit dem Menü BUFFERS umschalten. Der Name des aktuellen Puffers erscheint sowohl in der Statuszeile als auch in der Titelleiste des X-Fensters.

Eine Liste aller Puffer erhalten Sie über BUFFERS | LIST ALL BUFFERS oder über die Tastenkombination Strg+x, Strg+b. Auch die dann erscheinende Pufferliste ist wieder ein eigener Puffer; aus der Liste wählen Sie den gewünschten durch einen Klick mit der mittleren Maustaste aus. Wenn Sie ohne Maus arbeiten wollen, können Sie auch einfach Strg+x, b drücken; dann fragt Emacs Sie in der untersten Zeile nach dem Puffer, in den Sie wechseln möchten.

Sie schließen einen Puffer durch den Menübefehl FILE | DELETE BUFFER <buffername> oder mit der Tastenfolge Strg+x, Strg+k. Dann werden Sie noch gebeten, das Schließen mit der Eingabetaste zu bestätigen.

Zuweilen ändert sich die Datei, die Sie gerade im Puffer haben, unabhängig von XEmacs, beispielsweise weil ein anderes Programm sie neu erzeugt. Der Editor prüft diese Situation und weist Sie gegebenenfalls darauf hin. Um den Inhalt aus der zugehörigen Datei neu zu laden, verwenden Sie den Befehl FILE | REVERT BUFFER <buffername>. Zum Bestätigen dieser Aktion müssen Sie ausdrücklich yes eingeben. (Ansonsten weist Sie Emacs dezent darauf hin: Please answer yes or no.)

Fenster und Rahmen

Da Emacs ursprünglich für einfache Terminals entwickelt wurde, ist die Sprechweise in Bezug auf die Arbeit mit mehreren Dateien und Fenstern etwas unüblich. Bringen wir also ein wenig Licht in das Dunkel:

Sie können durchaus ein und denselben Puffer in mehreren Fenstern oder Rahmen anzeigen. Beachten Sie aber, dass es sich dabei immer um denselben Puffer handelt. Wenn Sie also in einer der Darstellungen eine Änderung vornehmen, wirkt sich diese sofort auf alle anderen aus.

Dateien anlegen, öffnen und speichern

Im Emacs gibt es nicht die Möglichkeit, einen leeren, unbenannten Puffer zu erzeugen. Wenn Sie eine neue Datei anlegen wollen, gehen Sie dabei genauso vor wie bei existierenden Dateien - nur dass Sie eben den Namen eintippen und nicht auswählen! Das bedeutet, Sie unternehmen den Versuch, eine (nicht vorhandene) Datei des gewünschten Namens zu öffnen; findet Emacs diese nicht, so erzeugt er einen leeren Puffer mit diesem Namen. Wenn Sie den Puffer das erste Mal speichern, wird die Datei angelegt.

Für das Öffnen einer Datei haben Sie zwei grundsätzlich verschiedene Alternativen: Entweder Sie verwenden die Emacs- oder die XEmacs-Methode.

Figure: Der find-file-Befehl des Emacs erlaubt die automatische Vervollständigung ebenso wie die Auflistung aller möglichen Fortsetzungen.



\includegraphics{images/findfile.eps}

Figure: Der Dialog zum Öffnen einer Datei kann mit der Maus bequem bedient werden.



\includegraphics{images/xemacs_opend.eps}



Abspeichern können Sie Änderungen mit dem Werkzeugleisten-Schalter oder dem Menübefehl FILE | SAVE <dateiname>. Am schnellsten ist allerdings wieder einmal die Tastatur; verwenden Sie hier die Kombination Strg+x, Strg+s. Auch wenn Sie sonst keine Tastaturkürzel lernen wollen, empfehle ich Ihnen, sich zumindest dieses einzuprägen. Das regelmäßige Speichern ist zwar unter Linux nicht so wichtig wie unter Windows, und XEmacs ist eine Anwendung, die Sie kaum zum Absturz bringen können - trotzdem sollten Sie Ihre Arbeit hin und wieder auf die Platte sichern.

Wenn Sie beim zweiten Anschlag die Steuerungstaste weglassen, also Strg+x, s drücken, werden alle Puffer gespeichert, die als modifiziert gekennzeichnet sind. Dies entspricht dem Menübefehl FILE | SAVE SOME BUFFERS.

Schließlich können Sie der Datei natürlich auch beim Speichern einen neuen Namen geben (etwa um die bestehende nicht zu überschreiben). Dazu verwenden Sie, wie leicht zu erraten ist, den Menübefehl FILE | SAVE AS.

Übrigens legt XEmacs auch selbstständig nach einer gewissen Zahl von Änderungen eine automatische Sicherung an. Diese wird wieder gelöscht, wenn Sie selbst die Datei speichern. Diese Sicherungskopie hat denselben Namen und dasselbe Verzeichnis wie Ihre Datei, wobei aber am Anfang und am Ende des Namens noch ein Doppelkreuz # hinzukommt. Sollte Ihr Rechner abstürzen, während Sie mit XEmacs eine Datei bearbeiten, können Sie nach dem Neustart mit der Sicherungskopie Ihre Arbeit fortsetzen. Dazu laden Sie die Datei wie gewohnt und geben dann zunächst Alt+x ein, um in den Kommandomodus zu gelangen, wo Sie den Befehl recover file eintippen und mit der Eingabetaste bestätigen müssen.

Rückgängig

Wie in jedem guten Editor, so können Sie auch im Emacs Änderungen an Ihrem Text wieder rückgängig machen, und zwar auch mehrere hintereinander. Dabei werden Buchstaben, die Sie eingeben, zu Gruppen von zwanzig zusammengefasst; ein Aufruf des Befehls für Rückgängig entfernt dann die ganze Gruppe.

Sie erreichen diesen Befehl über den Schaltknopf in der Werkzeugleiste, den Menüeintrag EDIT | UNDO oder mit den Tastenfolgen Strg+x, u oder Strg+_.

Wenn Sie in einer Kommandozeile oder einem Dialog hängen bleiben, hilft Ihnen meistens die Tastenkombination Strg+g wieder heraus. In hartnäckigen Fällen funktioniert auch manchmal das dreimalige Drücken von Esc.


Hilfe

Über das Menü HELP haben Sie Zugang zu einer ganzen Reihe von Informationsquellen, die Ihnen bei Ihrem Umgang mit XEmacs weiterhelfen können. Neben elementaren Hilfestellungen finden Sie dort auch Dokumentationen zu allen Tastatur- und Mausaktionen sowie zu den erweiterten Kommandos. Am besten gehen Sie die Menüeinträge, die Sie interessieren, einfach durch, um zu sehen, was sich dahinter verbirgt.

Der XEmacs bietet Ihnen außerdem einen komfortablen Zugriff auf die GNU-Info-Seiten. Wie Sie wissen, handelt es sich dabei um eine unter Linux gebräuchliche Form der Programmdokumentation. Von einer zentralen Seite aus können Sie sich - ähnlich wie mit einem WWW-Browser - zu jedem Abschnitt durchklicken, der Sie interessiert. Auch über den XEmacs selbst finden Sie hier die ausführlichsten Informationen. Sie erreichen die Eingangsseite über den Button INFO der Werkzeugleiste oder über den Menüpunkt HELP | MANUALS | INFO sowie mit der Tastenkombination Strg+h, i. Die fett gedruckten Begriffe stellen dabei die Links dar. Gleichzeitig können Sie aber auch von Abschnitt zu Abschnitt springen mit der Navigationszeile am oberen Rand des Textfensters (in Form von Next:...Prev: ...Up: ...). Eine Verzweigung erreichen Sie dabei durch einen Klick mit der mittleren Maustaste.

Suchen und Ersetzen

Es wird Sie kaum verwundern, wenn ich Ihnen sage, dass der XEmacs-Editor auch für so etwas Alltägliches wie das Suchen gleich mehrere Funktionen in unterschiedlicher Komplexität bereitstellt.

Inkrementelle Suche

Die einfachste ist die inkrementelle Suche. Diese erreichen Sie über EDIT | SEARCH oder - am einfachsten - mit Strg+s. Wenn Sie diese Funktion aktivieren, erscheint in der untersten Zeile des X-Fensters die Meldung I-search:. Nun können Sie den gesuchten Begriff eingeben. Bei jedem neuen Buchstaben springt XEmacs an die erste Stelle im Text (von der aktuellen Cursorposition aus gesehen), an der die bislang eingetippte Buchstabenfolge steht. Gibt es keine solche Stelle, ertönt ein Warnton und der Text in der Echo-Zeile ändert sich in Failed I-search. In diesem Fall können Sie auch mit der Rücktaste Buchstaben löschen und den Begriff hernach anders enden lassen.

Haben Sie auf diese Weise die gesuchte Textstelle gefunden, können Sie das Suchen mit jeder Cursorbewegung oder der Eingabetaste beenden. Falls Sie allerdings an einer Stelle gelandet sind, die zwar auch den Suchbegriff enthält, die Sie aber gar nicht haben wollten, können Sie durch Drücken von Strg+s die Suche fortsetzen.

Wenn Sie zwischendurch wieder editieren oder mit dem Cursor umherfahren und dann nochmals den letzten Begriff suchen wollen, drücken Sie einfach zweimal Strg+s hintereinander.

Eine auf diese Art gestartete Suche verläuft übrigens immer vorwärts, das heißt zum Ende des Textes hin. Wenn Sie in die andere Richtung suchen wollen, müssen Sie entweder Strg+r eingeben oder den Menübefehl EDIT | SEARCH BACKWARD wählen.

Solange Sie in Ihrem Suchbegriff nur Kleinbuchstaben verwenden, verläuft die Suche ohne Rücksicht auf die Groß-/Kleinschreibung. Wenn Sie auch Großbuchstaben eingeben, werden nur Stellen gefunden, die diese auch enthalten.

Suche nach regulären Ausdrücken

Eine leistungsfähigere Suchfunktion ist die nach regulären Ausdrücken. Unter einem solchen versteht man ein Muster, das eine Klasse von Zeichenketten beschreibt. Für viele Benutzer dürfte jedoch die einfache inkrementelle Suche ausreichen, so dass ich in diesem Rahmen nicht näher auf die Suche nach regulären Ausdrücken eingehen will. Wenn Sie mehr wissen wollen, werfen Sie einen Blick in die Onlinedokumentation zu XEmacs, die Sie über HELP | MANUALS | INFO erreichen (und in diesem Fenster dann nach EMACS suchen und darauf mit der mittleren Maustaste klicken), oder in [CAMERON . 1996] beziehungsweise [FRIEDL 1997].

Suchen und Ersetzen

Bei einer anderen Art der Suche soll sofort nach dem Auffinden eines Begriffs dieser durch einen anderen ersetzt werden. Dazu wählen Sie EDIT | REPLACE oder tippen Alt+% (auf deutschen Standardtastaturen entspricht dies Alt+$\Uparrow$+5). Daraufhin erscheint in der Echo-Zeile die Eingabeaufforderung Query replace:. Hier geben Sie nun den Text ein, nach dem Sie suchen wollen, und bestätigen dies mit der Eingabetaste. Dann ändert sich die Eingabeaufforderung in Query replace <Ihr Text> with:. Dahinter geben Sie den neuen Text ein. Wenn Sie diese Eingabe wieder bestätigen, geht die Suche los: Der Editor springt zum ersten Vorkommen des Ausdrucks und markiert diesen. Wenn Sie nun y drücken, wird der gefundene Begriff durch den neuen ersetzt; bei n wird der bisherige beibehalten. Jede andere Taste bricht die Suche ab. Haben Sie sich entschieden, springt der Cursor zum nächsten Vorkommen des Ausdrucks und so weiter, bis der Text zu Ende ist.

Bei einer erneuten Suche dieser Art können Sie übrigens auf die bisher verwendeten Begriffe (sowohl die zum Suchen als auch die zum Ersetzen) zurückgreifen. Dazu drücken Sie an der Eingabeaufforderung einfach die Pfeiltaste $\uparrow$, bis Sie zum gewünschten Ausdruck kommen.

Wenn Sie es sich übrigens anders überlegt haben und die Eingabe abbrechen wollen, können Sie dies mit Strg+g tun.

Manchmal ist man sich aber auch sicher, dass man wirklich jedes Vorkommen eines Ausdrucks in der Datei ersetzen will. Dann kann es mühsam werden, jede einzelne Aktion mit y zu bestätigen. In diesem Fall können Sie ein anderes Kommando verwenden. Drücken Sie dazu zuerst Alt+x, um in den Kommandomodus zu gelangen. Dort geben Sie dann replace-string ein und bestätigen mit der Eingabetaste. Jetzt folgt der Suchausdruck, eine erneute Bestätigung, dann der Ersatzausdruck und wieder eine Bestätigung. Und schon ist jegliches Vorkommen ausgetauscht.

Auch die Befehle zum Ersetzen gibt es in einer Version, die reguläre Ausdrücke versteht. Dafür muss ich Sie aber wieder auf andere Dokumentationen verweisen.

Ausschneiden, Kopieren und Einfügen

Eine Möglichkeit zum Verschieben von Text haben wir oben bereits gesehen: zuerst löschen und dann mit Strg+y wieder einfügen (siehe Seite [*]).

Um einen Text auf andere Art zu kopieren, gibt es drei Möglichkeiten: mit der Tastatur, den Emacs-Weg mit der Maus und den XEmacs-Weg mit der Maus. Welchen Sie davon wählen, bleibt Ihnen und Ihren Vorlieben überlassen.

Mit der Tastatur

Zunächst müssen Sie den zu kopierenden Text markieren. Möglicherweise im Gegensatz zu Ihren sonstigen Gewohnheiten, können Sie im XEmacs nicht mit den Cursortasten bei gedrückter Umschalttaste markieren (auch dies ein Problem vieler Anfänger). Um das Markieren zu beginnen, drücken Sie Strg+Leertaste. Nun können Sie - ohne eine weitere Taste festzuhalten - den Cursor umherbewegen und so den Bereich markieren, der zwischen der Start- und der aktuellen Position liegt.

Zum Kopieren können Sie dann Strg+Einfg verwenden. Einen solchen Text wieder einzufügen, klappt mit $\Uparrow$+Einfg. Wenn Sie den Bereich hinter Ihrer ersten Markierung hervorgehoben haben, aber noch ein paar Zeichen davor auch einschließen wollen, drücken Sie hintereinander Strg+x, Strg+x, was den Cursor ans andere Ende der Markierung bringt.

Wenn Sie vom Markieren genug haben und eigentlich gar nichts mehr markieren wollen, können Sie den Vorgang auch mit Strg+g abbrechen.

Mit der Maus nach Emacs-Art

Zunächst markieren Sie den gewünschten Bereich, indem Sie ihn bei gedrückter linker Maustaste überstreichen. Wenn Sie dann die Maustaste wieder loslassen, erscheint im Echo-Bereich der Hinweis: Mark set. (Einzelne Wörter können Sie mit einem Doppelklick darauf markieren, eine ganze Zeile mit einem Dreifachklick.) Nun setzen Sie den Mauszeiger an die Stelle, wo Sie den Text hinhaben wollen, und drücken einmal auf die mittlere Maustaste. Schon ist der Text eingefügt!

Die Markierung bleibt übrigens so lange im Speicher, bis Sie eine neue Markierung anbringen. In dieser Zeit können Sie den Inhalt beliebig oft und in allen Puffern, Fenstern und Rahmen des XEmacs einfügen - sowie in vielen anderen X-Anwendungen.

Mit der Maus nach XEmacs-Art

Diese Art des Kopierens und Verschiebens ist für Windows-Anwender wohl die vertrauteste. Markieren Sie mit der linken Maustaste wie gerade beschrieben den Text. Wählen Sie anschließend EDIT | COPY aus dem Menü oder klicken Sie auf die Schaltfläche COPY der Werkzeugleiste. Nun haben Sie den Text in der X-Window-Zwischenablage hinterlegt. Mit EDIT | PASTE oder dem entsprechenden Button bringen Sie ihn dann an die gewünschte Stelle.


Modi

Der XEmacs-Editor ändert sein Verhalten und Teile seiner Funktionalität in Abhängigkeit vom Dateityp des aktuellen Puffers. Jeder Puffer hat einen so genannten major mode (Hauptmodus) und kann sich zusätzlich in verschiedenen minor modes (Submodi) befinden. Für alle gängigen Programmiersprachen und Unix-Textdateitypen sind Definitionen eines Hauptmodus schon in Ihrer XEmacs-Installation enthalten.

Wenn Sie den Modus herausfinden wollen, in dem sich Ihr aktueller Puffer gerade befindet, genügt ein Blick auf die Statuszeile. In der Klammer hinter dem Dateinamen steht der Name oder eine Abkürzung des Modus. Wollen Sie mehr Details darüber wissen, drücken Sie einfach Strg+h, m.

Darstellung der Puffer-Modi

Die Modi der aktuellen Puffer zeigt Ihnen beispielsweise die Pufferliste an, die Sie mit BUFFERS | LIST ALL BUFFERS erhalten. Die Liste der Puffer, die Ihnen das Menü BUFFERS zeigt, ist ebenfalls nach deren Modi unterteilt. Standardmäßig besteht die Unterteilung nur in einer Trennlinie zwischen den Typen, so dass Puffer gleichen Typs in einem abgegrenzten Bereich des Menüs auftauchen. Sie können dieses Verhalten aber auf vielfältige Weise über das Menü OPTIONS | MENUBAR APPEARANCE ändern. Das reicht von rein alphabetischer Anordnung bis hin zu Untermenüs für jeden Puffer-Modus (dies beispielsweise über OPTIONS | MENUBAR APPEARANCE | SUBMENUS FOR BUFFER GROUPS).


Auswirkungen des Hauptmodus

Wie auf Seite [*] schon angedeutet, wirkt sich der Hauptmodus beispielsweise auf die Cursorbewegung aus. Bei vielen Modi gibt es ein eigenes Menü für den jeweiligen Typ. Bei C++-Programmen heißt dies auch C++ und enthält Möglichkeiten zum Auskommentieren ganzer Regionen, zum Bewegen des Cursors entlang von Blöcken oder Präprozessor-Bedingungen und so weiter.

Eine wichtige Option ist das Einfärben des Textes gemäß der Syntax der Programmiersprache. In XEmacs aktivieren Sie dies mit dem Menübefehl OPTIONS | SYNTAX HIGHLIGHTING | IN THIS BUFFER. Sie können in diesem Untermenü auch noch den Grad der Färbung beziehungsweise Differenzierung einstellen, wenn es Ihnen zu bunt wird. (Damit diese Einstellung auch für Ihre nächste Sitzung aktiv bleibt, speichern Sie sie am besten gleich, und zwar mit Hilfe von OPTIONS | SAVE OPTIONS.) Nun sind Kommentare rot, Funktionsheader blau, Zeichenketten grün etc. Auf diese Weise können Sie die einzelnen Programmelemente deutlich besser voneinander unterscheiden und finden sich vermutlich besser im Quelltext zurecht.

Eine andere, für Programmierer auch sehr praktische Option ist die Anzeige von Klammerbereichen. Ein häufiger Fehler beim Schreiben von Programmen entsteht durch das Vergessen der schließenden Klammern, etwa die runden bei Funktionsaufrufen oder Konstruktoren, ganz besonders aber die geschweiften bei Anweisungsblöcken und Funktionskörpern. Hier bietet Ihnen der XEmacs unter OPTIONS | PAREN HIGHLIGHTING (denn Klammern heißen auf Englisch parentheses) drei Möglichkeiten:

Die jeweils zugehörige Klammer sucht sich der Editor dabei selbst. Auf diese Weise können Sie nicht nur erkennen, welche Blöcke zusammengehören, sondern auch, ob es die passende Klammer überhaupt gibt oder ob nicht der geklammerte Bereich ganz woanders beginnt beziehungsweise endet, als Sie dachten.

Die Konfigurationsdatei

Der Emacs/XEmacs ist insbesondere deshalb so vielseitig und leistungsfähig, weil er über eine offene Programmierschnittstelle verfügt. Jeder kann in der Programmiersprache Lisp seine eigene Emacs-Erweiterungen schreiben, wenn er dazu Lust hat. Diese Offenheit drückt sich auch in der Konfigurationsdatei aus. Der XEmacs hat davon gleich zwei: Die Einstellungen, die ausschließlich die X-Oberfläche betreffen, finden Sie in der Datei .xemacs-options in Ihrem Home-Verzeichnis, und die Einstellungen, die sich auf Emacs-Eigenschaften beziehen, stehen in .emacs, ebenfalls im Home-Verzeichnis. In Letzterer können Sie auch spezielle Zuordnungen für Dateitypen anbringen, die automatisch erkannt werden. Wenn Sie dort Eingriffe vornehmen wollen, empfehle ich Ihnen, sich zunächst intensiver mit Emacs und seinen Befehlen zu beschäftigen, zum Beispiel anhand von [CAMERON . 1996] oder zumindest mit Hilfe der kompletten Online-Dokumentation.

Fazit

Der XEmacs bietet Ihnen eine Fülle von Möglichkeiten. In diesem Abschnitt konnte ich Ihnen nur die elementarsten davon vorstellen. Viele nützliche wie nette Features mussten unerwähnt bleiben. Wenn Sie Gefallen an diesem Editor gefunden haben, werden Sie sicher noch öfter damit arbeiten und so mit der Zeit immer weitere Fähigkeiten entdecken: Vom Mail-Lesen über die Berechnung der Mondphasen bis hin zu Spielen bietet er Ihnen sicher mehr, als Sie erwarten.


Weitere Editoren

vi und XEmacs sind unter Unix seit vielen Jahren der De-facto-Standard. Auch wenn Sie sie nicht selbst einsetzen wollen, sollten Sie sich als Linux-Programmierer mit ihnen vertraut machen. Früher hatten Sie kaum eine Alternative zu diesen beiden Programmen. Heute, wo die Zahl der Anwendungen für Linux explosionsartig zunimmt, ist die Situation natürlich deutlich anders. Es gibt eine Reihe weiterer guter Editoren, die dem Programmierer wertvolle Hilfe sein können. Drei davon will ich Ihnen hier kurz vorstellen. (An dieser Stelle nochmals der Hinweis, dass auf Seite [*] mit NEdit ein zusätzlicher Kandidat schon vorkam.)


Glimmer

Auch die beiden großen Open-Source-Projekte für Benutzeroberflächen, GNOME und KDE, haben eigene Editoren (natürlich unter GPL) hervorgebracht, jeweils gleich mehrere - in unterschiedlichem Reifegrad. Für Programmierer steht bei GNOME derzeit mit Glimmer ein leistungsfähiger Editor zur Verfügung, der einige nützliche Funktionalität zu bieten hat.

Glimmer, die Weiterentwicklung des CodeCommander, ist leider noch nicht Bestandteil einer üblichen GNOME-Distribution. Sie müssen daher die aktuellen Quellen von der Projekt-Homepage glimmer.sourceforge.net herunterladen und selbst übersetzen. Dazu benötigen Sie ein möglichst aktuelles und vollständiges GNOME-System für Entwickler, das heißt einschließlich der Header für die Bibliotheken. Für die Programmierbarkeit in Python brauchen Sie außerdem noch eine Python-Entwicklungsversion. Haben Sie erst einmal alles beisammen, geht die Installation mit den üblichen Schritten ./configure, make und make install problemlos vor sich.

Die Oberfläche

Die grafische Benutzerschnittstelle von Glimmer ist wie bei den meisten GNOME-Applikationen sehr modern und für (ehemalige) Windows-Anwender sicher auf Anhieb leicht zu verstehen (Abbildung [*]). Allerdings ist auch hier wieder einmal die deutsche Anpassung auf halbem Weg stehen gelieben, so dass Menüs und Dialoge sich in einem Gemisch von Deutsch und Englisch präsentieren.

Figure: Die Benutzerschnittstelle von Glimmer ist nur teilweise auf Deutsch.


\includegraphics{images/glimmer.eps}

Wenn Sie bisher viel mit Notepad oder Wordpad unter Windows gearbeitet haben, wird Ihnen der Umstieg auf Glimmer sicher nicht schwer fallen. Nicht nur die Werkzeugleiste und die Menüs, sondern auch die Tastaturkürzel sind an die Windows-Welt angelehnt. So bewegen Sie etwa den Cursor um ein Wort weiter, wenn Sie während des Anschlags der Pfeiltaste die Strg-Taste gedrückt halten, und speichern Ihre Änderungen mit Strg+s.

Eine Datei öffnen Sie über einen Dateiauswahldialog, der dem GNOME-Standard entspricht und auch gleich zu vorgegebenen Verzeichnissen wie dem Home-Verzeichnis oder /usr/local/include springen kann, oder Sie geben den Dateinamen als Argument auf der Kommandozeile mit.

Eine interessante Möglichkeit ist, Dateien auf einem entfernten Rechner zu öffnen. Dazu wählen Sie DATEI | OPEN REMOTE und tragen in den erscheinenden Dialog Rechnernamen, Port und Pfad sowie gegebenenfalls Benutzernamen und Passwort ein.

Textoperationen

Sie markieren Bereiche, wenn Sie die Umschalttaste gedrückt halten, während Sie den Cursor bewegen. Mit Strg+x löschen Sie den markierten Bereich und übertragen ihn in die Zwischenablage, mit Strg+c kopieren Sie ihn lediglich und mit Strg+v fügen Sie ihn wieder in den Text ein. Alternativ zu den Tasten können Sie nicht nur das Menü BEARBEITEN oder die Schaltflächen der Werkzeugleiste, sondern auch das Kontextmenü verwenden, das Sie wie gewohnt über die rechte Maustaste erreichen. Das Kontextmenü ist bei Glimmer nicht situationsabhängig, sondern stellt das komplette Hauptmenü noch einmal zur Verfügung.

Zum Suchen und Ersetzen von Textstellen gibt es jeweils einen eigenen Dialog, in dem Sie die gewünschten Suchoptionen gleich einstellen können. Vielleicht macht die voreingestellte Farbgebung der Syntaxeinfärbung die Fundstellen auch für Sie schwer erkennbar. In diesem Fall können Sie jedoch mit SETTINGS | HIGHLIGHT COLORS die Markierungsfarbe ändern. Lesen Sie zudem die Optionen gut durch und überlegen Sie, welche Sie davon benötigen - sonst schließt sich der Dialog schneller, als Ihnen lieb ist.

Apropos: Die Syntaxfärbung orientiert sich am Dateityp, der normalerweise an der Endung erkannt wird. Falls das einmal nicht funktioniert, können Sie über die Auswahlliste in der Schaltflächenzeile den richtigen Typ einstellen.

Um sich in Ihrem Code besser zurechtzufinden, können Sie Lesezeichen setzen, die auch beim Einfügen und Löschen von Zeilen dazwischen noch erhalten bleiben. Das Setzen erfolgt mittels Strg+b, die Navigation zum nächsten mit Strg+Alt+b, zum vorherigen Lesezeichen mit $\Uparrow$+Strg+b. Leider erkennen Sie nirgends, wo sich die Lesezeichen genau befinden, so dass Sie sich deren Position entweder merken müssen oder sich überraschen lassen, wo Sie eigentlich hinspringen.

Ähnlich wie beim XEmacs kann auch Glimmer Sie dabei unterstützen, zusammengehörige Klammernpaare zu erkennen. Steht der Cursor unmittelbar hinter einer Klammer, so erscheint die andere Klammer dieses Paares (sofern bereits vorhanden) farblich markiert. Mit Strg+e springen Sie direkt zu dieser. Wenn Sie nun noch Strg+Alt+e drücken, wird der gesamte geklammerte Bereich markiert. Auf diese Weise können Sie Fehler bei der Klammerung leicht feststellen.

Für die Dokumentation Ihrer Programme gibt es einige vordefinierte Textbausteine, die Sie als Kommentare einbauen können. Über INSERT | COMMON TEXT können Sie das aktuelle Datum und die Uhrzeit, Ihren Namen und Ihre E-Mail-Adresse sowie den obligatorischen Header für GPL-Dateien einfügen.

Glimmer anpassen

Die genannten Tastenkombinationen sind zwar die Vorgaben, können aber beliebig angepasst werden. Dazu müssen Sie lediglich den jeweiligen Menüpunkt öffnen, das heißt mit der Maus darüber bleiben ohne darauf zu klicken. Wenn Sie nun $\longleftarrow$ drücken, löschen Sie die Vorgabe. Die Tastenkombination, die Sie als Nächstes drücken, wird dann weiterhin für diese Funktion verwendet.

Glimmer bietet zudem die Möglichkeit, fast zu allen Ereignissen und Menüpunkten Skripte in der Programmiersprache Python zu hinterlegen. Genaueres dazu entnehmen Sie bitte der Dokumentation, die in diesem Punkt sogar recht ausführlich ist.

Weitere Funktionen

Eine nützliche Funktion ist die Suche nach einer passenden man-Seite zu einem Schlüsselwort (siehe auch Seite [*]). Wenn Sie einen Befehl aus der C-Bibliothek verwenden wollen, aber die Bedeutung seiner Parameter nicht mehr so genau kennen, drücken Sie einfach F1 und schauen die zugehörige man-Seite im GNOME-Hilfebrowser an.

Glimmer erlaubt auch, direkt aus dem Editor den Compiler zu starten. Die Ausgabe der Meldungen erfolgt in einem separaten Fenster. Leider ist es derzeit nicht möglich, per Doppelklick aus diesem zurück an die fehlerhafte Codestelle zu springen. Als Debugger erscheint der gdb (siehe Seite [*]) in einem eigenen Fenster, allerdings im reinen Text-Modus. Glimmer stellt kein grafisches Frontend dafür zur Verfügung.

Fazit

Alles in allem ist Glimmer ein Werkzeug, das sich anbietet, wenn Sie ohnehin GNOME einsetzen. Für kleine Programme oder kleinere Änderungen ist es ganz gut geeignet, auch wenn es zuweilen etwas instabil ist. Es verfügt bereits über einige ganz nützliche Funktionen und hat daher noch ganz interessante Entwicklungsperspektiven.


KWrite

Die Funktionsweise von KWrite, dem erweiterten Editor der K-Desktop-Umgebung KDE (siehe www.kde.org), ist ähnlich; auch hier folgt die Oberfläche der Philosophie der Umgebung, eben KDE, welche für einen Windows-Anwender recht intuitiv zu bedienen ist (Abbildung [*]). Entsprechend wenig Schwierigkeiten dürften Sie mit dem Programm haben.

Figure: Der KWrite-Editor erlaubt auch die Markierung in Spalten.



\includegraphics{images/kwrite.eps}

Die übliche Funktionalität ist vorhanden: Öffnen, Speichern, Umgang mit der Zwischenablage, Suchen und Ersetzen, Rückgängigmachen mehrerer Schritte und so weiter. Außerdem kann KWrite eine typabhängige, aber frei konfigurierbare Einfärbung von Quelltext gemäß der Syntax vornehmen. Damit erhöht sich die Lesbarkeit und Übersichtlichkeit von Programmen oft erheblich. Auch andere Eigenschaften des Editors können Sie an Ihre Vorlieben anpassen.

Darüber hinaus verfügt KWrite über einige Besonderheiten, aber auch über einige recht praktische Eigenschaften, auf die ich Sie noch hinweisen möchte.

Dateien öffnen

Zum Öffnen einer Datei bietet Ihnen KWrite neben dem Schalter der Werkzeugleiste und dem Menüeintrag DATEI | ÖFFNEN noch weitere Wege an:

Ein Highlight ist bei allen Methoden der transparente Zugriff auf Dateien außerhalb des eigenen Festplattensystems. Denn der Dateiname kann hier auch eine URL sein. Dann lädt KWrite das File (via Konqueror) vom angegebenen Server (HTTP, FTP etc.) und zeigt es an. Ein Abspeichern solcher Dateien an ihrer Originalposition ist aus verständlichen Gründen nicht möglich.

Textoperationen

Ähnlich wie Glimmer markiert auch KWrite die jeweils andere zugehörige Klammer eines Paares, wenn Sie den Cursor unmittelbar hinter einer platzieren. Ebenfalls analog sind die Lesezeichen: Mit Strg+b können Sie ein solches setzen. Nur die Navigation ist etwas anders. Sie erhalten alle Lesezeichen als Menüeinträge, wenn Sie das Menü BOOKMARKS aufklappen. Auf diese Weise können Sie nicht nur zu einer bestimmten Zeile, sondern zu einer vorher festgelegten Stelle springen.

Für Programmierer hilfreich ist das Auskommentieren ganzer Abschnitte. Dies können Sie über den Menüpunkt TOOLS | COMMENT erreichen. Bei einzelnen Zeilen wird das //-Zeichen verwendet, bei mehreren wird der ganze Text in /* ...*/ eingeschlossen.

Markieren

KWrite verhält sich beim Bewegen des Cursors wie gewohnt. So können Sie durch Drücken von $\Uparrow$ beim Betätigen der Pfeiltasten markieren und bei gleichzeitigem Drücken von Strg über Wörter und Ausdrücke hinwegspringen.

Insgesamt können Sie mit diesem Editor aber in einer Weise Text markieren, wie es sonst kaum ein anderes Programm anbietet. KWrite bietet Ihnen nicht nur die Markierung zusammenhängender Textstellen, sondern auf Wunsch auch Vertikalauswahl, das bedeutet die Selektion von Spalten, also von Zeichen, die direkt untereinander stehen. Dieses Verhalten aktivieren Sie mit F4.

Wie üblich können Sie den markierten Text anschließend durch Ausschneiden oder Kopieren in die Zwischenablage übertragen und an anderer Stelle wieder einfügen.

Fazit

Alles in allem ist KWrite ein Editor, mit dem sich sehr gut arbeiten lässt. Mit der Renovierung auf KDE2 ist daraus ein Werkzeug geworden, das sogar die Einfärbung des Textes in Abhängigkeit von einer Programmiersprache unterstützt.

Dass KWrite in der integrierten Entwicklungsumgebung KDevelop, zu der wir später noch kommen, eingesetzt wird, zeigt, dass doch einige Entwickler auf ihn setzen. Allerdings ist auch dieser Editor von der Stabilität und Mächtigkeit eines (X)Emacs noch entfernt.


XCoral

XCoral ist eine französische Entwicklung, die unter GPL (siehe Seite [*]) vertrieben wird und unter Programmierern immer mehr Freunde gewinnt (erhältlich von xcoral.free.fr). Obwohl der optische Eindruck völlig anders ist, sind viele Kommandos und Tastaturkürzel vom Emacs übernommen. Wenn Sie diesen Editor also bereits kennen, werden Sie sich schnell in XCoral zurechtfinden.

Grundlegende Befehle

Wenn Sie die Anwendung mit xcoral starten, haben Sie ein Fenster mit einer Menü- und einer Werkzeugleiste, einem Eingabebereich und einer Statuszeile vor sich (Abbildung [*]). Haben Sie keine Datei als Argument angegeben, so können Sie mit FILE | READ FILE eine öffnen. Der Dialog, der dann erscheint, ist zwar nicht ganz so komfortabel wie bei Glimmer oder KWrite, aber durchaus zweckmäßig.

Figure: XCoral ist ein Editor, der neben der Syntaxeinfärbung auch komfortable Browsing-Funktionen bietet.



\includegraphics{images/xcoral.eps}

Neben Mausklicks und den Cursortasten können Sie zum Navigieren im Text auch die Pfeilschaltflächen rechts unten verwenden. (Außerdem bietet XCoral verschiedene Tastenkombinationen zu diesem Zweck, die Sie bitte der Dokumentation entnehmen.)

Quelltexteinfärbung

Die Ähnlichkeiten zum XEmacs gehen aber deutlich über die Tastenkombinationen hinaus:

Wird der Modus nicht richtig erkannt, so können Sie entweder die Konfigurationsdatei ändern, damit dies künftig nicht mehr vorkommt, oder nur für diese Sitzung einen anderen Modus über das Menü MODES festlegen. Ist zudem die Einfärbung nicht gleich aktiviert, so genügt ein Klick auf den Button mit den farbigen Balken in der Werkzeugleiste (oder die Auswahl von REGION | COLOR BUFFER).

Einfügen von Programmrümpfen

In der C++-Programmierung hat man oft viel Schreibarbeit. Beginnt man eine neue Klasse, so braucht diese eine Deklaration, einen Konstruktor, einen Destruktor und so weiter. Ein Teil der Arbeit will Ihnen XCoral mit einem besonderen Feature abnehmen. Über MISC | PROGRAMMING UTIL gelangen Sie zu einem Dialog, mit dem Sie Gerüste für C++-Klassen und Methoden erzeugen können. In Abbildung [*]Fig:XCoral sehen Sie beispielsweise, was XCoral erzeugt, wenn ich nur Raumfahrzeug als Klassenname und Raumobjekt als Basisklasse eingebe. Auf dieser Basis können Sie dann die Deklaration Ihrer Klasse vervollständigen. Wenn Ihnen die Vorgabe nicht gefällt oder nicht genügt, können Sie sie auch beliebig ändern (Datei /usr/lib/xcoral/head.sc).

Der Klassenbrowser

Gerade in einem größeren C++-Projekt verliert man leicht die Übersicht. Es gibt eine ganze Reihe von Klassen mit jeweils einigen Methoden und Attributen. Schnell die passende Quelltextstelle zu finden, ist eine Kunst. Bei dieser Aufgabe kann Ihnen der Klassen- und Funktionsbrowser von XCoral wertvolle Dienste leisten.

Figure: Der Klassenbrowser von XCoral ermöglicht die Navigation durch Klassen, Methoden und Dateien.



\includegraphics{images/xc_browser.eps}

Sie rufen den Browser mit dem Menüpunkt WINDOW | BROWSER WINDOW auf. Zunächst ist wichtig, dass Sie verstehen, dass dieses Fenster noch nichts mit Ihren übrigen Editorfenstern zu tun haben muss. Vermutlich ist es sogar ganz leer. Über die Schaltfläche ADD fügen Sie Dateien und Verzeichnisse hinzu, deren Inhalt XCoral aufnehmen und darstellen soll. Wenn Sie ein Verzeichnis im Datei-Dialog auswählen, werden alle C++-Header- und Implementationsdateien in diesem Verzeichnis hinzugefügt und damit alle Klassen, Funktionen und globale Variablen, die darin enthalten sind. Anschließend können Sie in der Liste TYPES links oben die nun bekannten Klassen sehen. Wenn Sie auf eine davon klicken, erhalten Sie in den Fenstern daneben und darunter die Methoden und Attribute sowie gegebenenfalls die Ober- und Unterklassen angezeigt.

Zum Browser gehört außerdem noch ein so genanntes Visit Window; in diesem wird die zugehörige Quelltextstelle sofort angezeigt, wenn Sie ein Element im Browserfenster anklicken. Da das Besuchsfenster dabei immer in den Vordergrund gerückt wird, sollten Sie es neben dem Browser auf dem Desktop anordnen, damit die Überlappungen Sie nicht bei der Arbeit behindern.

Wenn Sie doppelt auf ein Element klicken, öffnen Sie ein Editierfenster, in dem der Cursor gleich an der entsprechenden Stelle im Quelltext steht. Dabei können Sie mit der Schaltfläche DECL/IMPL umschalten, ob Sie zur Deklaration oder zur Implementation gelangen wollen.

Auch wenn der Browser noch an ein paar Stellen nicht fehlerfrei arbeitet, kann er doch recht hilfreich sein. Wir werden später aber noch zu integrierten Entwicklungsumgebungen kommen, die sehr viel weiter gehende Funktionalität bieten.

Fazit

Alles in allem ist XCoral ein Editor, der für den Programmierer in die engere Wahl kommen sollte. Auch wenn das Look & Feel etwas ungewohnt sein mag, sind seine Funktionen schon ziemlich ausgereift. Mit der syntax-gemäßen Einfärbung des Quelltextes können Sie schon ein besseres Bild von Ihrem Code gewinnen. Die Möglichkeit, automatisch Gerüste für Klassen und Methoden zu erzeugen, kann Ihnen einiges an Tipparbeit ersparen. Und nicht zuletzt ist der Klassenbrowser ein nützliches Werkzeug, um sich in größeren Projekten zurechtzufinden und rasch die gesuchte Stelle im Code zu finden.

Da XCoral darüber hinaus freie Software unter GPL ist, können Sie auch selbst Anpassungen am Programm vornehmen, wo Sie sie für nötig halten. Aber so weit müssen Sie in den meisten Fällen gar nicht gehen. Dank des C-Interpreters ist XCoral so frei konfigurierbar, dass Sie viele Ihrer Zusatzwünsche sicher schnell selbst einbauen können.

Und was sonst?

Da Editoren zu den elementaren Werkzeugen bei der Arbeit am Computer gehören, gibt es von ihnen unüberschaubar viele. Ein großer Teil davon beschränkt sich jedoch auf sehr elementare Funktionen und/oder sehr einfache Benutzerschnittstellen. Wenn Sie einen Editor mit etwas mehr Komfort suchen, der Sie zudem bei der Programmierung unterstützt, wird die Auswahl schon kleiner.

Sie haben in diesem Kapitel ein paar der wichtigsten und ein paar der interessantesten Werkzeuge kennen gelernt. Mit so ziemlich jedem von diesen könnten Sie große und sehr große Programme schreiben. Welchen Sie letztendlich benutzen, hängt ganz von Ihnen ab. Es ist aber immer sinnvoll, zunächst einmal verschiedene auszuprobieren um festzustellen, mit welchem man am besten zurechtkommt.

Die integrierten Entwicklungsumgebungen, denen Sie in Kapitel [*] begegnen werden, haben fast alle wieder eigene Editoren. Das macht die Gewöhnung daran nicht einfacher; wenn Sie aber schon die wichtigsten Paradigmen kennen, fällt Ihnen der Umstieg sicher nicht schwer.


next up previous contents index
Next: Werkzeuge für die Softwareentwicklung Up: C++-Entwicklung mit Linux Previous: Fortgeschrittenes C++   Contents   Index
thomas@cpp-entwicklung.de