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:
)
)
)
)
)
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.
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.
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
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.
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:
Der vi-Editor kennt drei verschiedene Modi:
.
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.
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:
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.
Eine andere Möglichkeit der Korrektur besteht im Rückgängigmachen von Änderungen. Dazu gibt es verschiedene Tastenkombinationen:
Im Kommandomodus stehen Ihnen verschiedene Befehle zum Löschen von Text zur Verfügung:
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
$, 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
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
+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:
:s/text1/text2: ersetzt den Text text1 durch text2;
allerdings wird dabei nur das erste Auftreten in der aktuellen Zeile berücksichtigt.
:s/text1/text2/g: ersetzt alle Vorkommen von Text
text1 in der aktuellen Zeile durch text2.
:s/text1/text2/gc: ersetzt alle Vorkommen von Text text1
in der aktuellen Zeile durch text2, verlangt aber für jede Ersetzung
eine Bestätigung (drücken Sie dazu einfach y für yes beziehungsweise
n für no).
:<startezeile>,<endzeile> s/text1/text2/g:
ersetzt alle Vorkommen von Text text1 im Bereich zwischen den angegebenen
Zeilen durch text2.
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
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
+z,
+z
den Text speichern und anschließend gleich das Programm verlassen. Die anderen
Speicherbefehle können Sie im Letzte-Zeile-Modus eingeben:
:w speichert die gerade bearbeitete Datei.
:w <dateiname> speichert die Datei unter einem anderen Namen.
:<startzeile>,<endzeile> w <dateiname> speichert
den Textbereich zwischen den angegebenen Zeilen in die genannte Datei.
:57,$ w text57.data
w noch ein Ausrufezeichen ! setzen.
Zum Laden von Text gibt es zwei Varianten:
:r <dateiname> fügt die angegebene Datei an der Cursorposition
in den aktuellen Text ein.
:e <dateiname> beendet das Editieren der aktuellen Datei und fährt
mit der Bearbeitung der angegebenen fort.
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.
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
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:
Dafür gibt es im Wesentlichen zwei Befehle:
Der vi-Editor verfügt noch über viele weitere Befehle, von denen ich Ihnen hier nur noch vier recht praktische vorstellen will:
:set nu schaltet die Anzeige der jeweiligen Zeilennummer vor jeder Zeile
ein.
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.
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.
Sie rufen den XEmacs-Editor einfach mit seinem Namen auf:
% xemacs
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.
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.
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+
und Strg+
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+
und Alt+
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.
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.
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.)
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:
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.
|
). Sie können dann entweder
weitere Buchstaben eingeben oder eine der Möglichkeiten mit der mittleren Maustaste
anklicken. Wenn Sie dann den vollständigen Pfad mit Namen bestimmt haben, drücken
Sie die Eingabetaste, um die Datei zu laden.
),
der Ihnen für die Auswahl einer Datei vermutlich deutlich vertrauter vorkommt.
Er ist zwar auch vom find-file-Prinzip des Emacs abgeleitet, kann aber auch
wie ein üblicher Dialog dieser Art (ähnlich wie unter MS-Windows) bedient werden.
Der einzige Unterschied ist, dass Sie die Auswahlen im Verzeichnis- und im Dateiteil
mit der mittleren Maustaste treffen müssen.
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.
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.
Ü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.
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.
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.
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].
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+
+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
,
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.
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.
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
+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.
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.
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.
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.
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).
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:
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.
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.
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.)
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.
). 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.
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.
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
+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 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.
). 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.
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.
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.
Zum Öffnen einer Datei bietet Ihnen KWrite neben dem Schalter der Werkzeugleiste und dem Menüeintrag DATEI | ÖFFNEN noch weitere Wege an:
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.
KWrite verhält sich beim Bewegen des Cursors wie gewohnt. So können
Sie durch Drücken von
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.
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 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.
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.
|
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.)
Die Ähnlichkeiten zum XEmacs gehen aber deutlich über die Tastenkombinationen hinaus:
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).
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.
|
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.
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.
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.