# Weitentwickelte Editierwerkzeuge

## Kommentar/Kommentar entfernen

Die Befehle Kommentar und Kommentar entfernen im Menü Bearbeiten erlauben das Hinzufügen oder Entfernen von Kommentarzeichen zur Auswahl, oder der aktuellen Textzeile, wenn kein Text markiert wurde. Diese Funktionen stehen nur zur Verfügung, wenn das benutzte Textformat Kommentare unterstützt.

Die Regeln für Kommentare werden in den Definitionen für die Syntax festgelegt, wenn Hervorhebungen für Syntax nicht benutzt werden, ist die Nutzung der Befehle also nicht möglich.

Einige Formate nutzen Kommentarzeichen für einzelne Zeilen, manche nutzen Kommentarzeichen für mehrere Zeilen, manche beides. Wenn Kommentarzeichen für mehrere Zeilen nicht verfügbar sind, kann eine Auswahl nicht auskommentiert werden, deren letzte Zeile nicht vollständig in die Auswahl einbezogen ist.

Wenn Kommentarzeichen für einzelne Zeilen definiert sind, werden diese bevorzugt eingesetzt, dies hilft, Probleme mit eingebetteten Kommentaren zu vermeiden.

Wenn Sie Kommentarzeichen entfernen, sollte nur kommentierter Text ausgewählt sein. Wenn mehrzeilige Kommentare entfernt werden, werden Leerzeichen und Tabulatoren (whitespaces) außerhalb der Kommentarzeichen ignoriert.

Um Kommentarzeichen einzufügen, wählen Sie im Menü Bearbeiten Kommentar oder den Tastaturkurzbefehl, hier standardmäßig &Ctrl;#.

Zum Entfernen von Kommentarzeichen wählen Sie im Menü Bearbeiten Kommentar entfernen oder den Tastaturkurzbefehl, hier standardmäßig &Strg;&Umschalt;#.

## Bearbeitungsbefehl...

Dieses Werkzeug, das Sie vom Eintrag Extras Bearbeitungsbefehl... nutzen können, gibt Ihnen eine kleine Auswahl von vi/vim-Befehlen zum Editieren von Text.

Die folgenden Befehle sind verfügbar:

`Zeit`

  Dieser Befehl gibt die aktuelle Uhrzeit Ihres Systems im Format HH:MM:SS aus.

  Rufen Sie den Dialog Bearbeitungsbefehl... auf und schreiben Sie in das Eingabefeld das Wort `time`

`Zeichen`

  Dieser Befehl erlaubt das Einsetzen von Zeichen in Text durch die Eingabe Ihrer Kodierung in dezimaler, oktaler oder hexadezimaler Form. Rufen Sie den Dialog Bearbeitungsbefehl... auf, schreiben Sie in das Eingabefeld das Wort `char:[nummer]` und klicken Sie auf OK.

  ### Beispiele zu `char`

  Eingabe: `char:234`

  Ausgabe: `ê`

  Eingabe: `char:0x1234`

  Ausgabe: `ê`

  Eingabe: `char:1232`

  Ausgabe: `ê`

`s///[ig]` `%s///[ig]`

  Dieser Befehl führt Suchen/Ersetzen auf der aktuellen Zeile oder in der gesamten Datei aus (`%s///`).

  Kurz gesagt, der Text wird nach dem Suchtext, dem regulären Ausdruck zwischen dem ersten und dem zweiten Schrägstrich, durchsucht und wenn der Suchtext gefunden wurde, wird der übereinstimmende Teil des Textes durch den Ausdruck zwischen dem mittleren und dem hinterem Schrägstrich ersetzt. Runde Klammern im Suchtext erzeugen Referenzen, die dann später dazu benutzt werden, die Zeichenketten wiederzuverwenden. Diese Referenzen werden wie folgt aufgerufen: `\1` für die erste Referenz, `\2` für die zweite und so weiter.

  Um nach einem Sonderzeichen, `(` oder `)`, zu suchen, müssen Sie dieses durch einen Rückwärtsschrägstrich kenntlich machen. `\(\)`

  Wenn Sie ein `i` an das Ende des regulären Ausdrucks setzen, dann wird Groß- und Kleinschreibung bei der Suche ignoriert.

  ### Ersetzen von Text in der aktuellen Zeile

  Ihr lieber Computer verweigerte gerade die Ausführung eines Programms, mit der Bemerkung, dass die Klasse `myClass`, die in der Zeile 3902 im Quelltext verwendet wird, nicht definiert ist.

  "Natürlich!", denken Sie, das muss `MyClass` heißen. Sie gehen zur Zeile 3092, rufen den Bearbeitungsbefehl auf, geben `s/myclass/MyClass/i` ein und klicken auf OK, Speichern die Datei und kompilieren – ohne Fehlermeldungen.

  ### Ersetzen von Text in der gesamten Datei

  Stellen Sie sich vor, Sie hätten eine Datei, in der eine Miss Jensen einige Male erwähnt wird. Jemand kommt zur Tür herein und erzählt Ihnen, dass sie gerade Mr Jones geheiratet hat. Sie stehen nun vor der Aufgabe, jedes Miss Jensen durch Ms Jones zu ersetzen.

  Rufen Sie den Bearbeitungsbefehl auf, geben Sie `%s/Miss Jensen/Ms Jones/` ein und klicken Sie auf OK - fertig.

  ### Ein etwas komplizierteres Beispiel

  Dieses Beispiel benutzt Referenzen und auch eine Wortklasse (wenn Sie nicht wissen, was das bedeutet, sehen Sie bitte in der unten angegebenen Dokumentation nach).

  Stellen Sie sich vor, Sie hätten folgende Zeile:

      void MyClass::DoStringOps( String      &foo, String &bar String *p, int  &a, int &b )

  Sie erkennen, dass nicht gut lesbar ist und entscheiden, das Schlüsselwort `const` für alle address of-Argumente zu verwenden (diese sind durch den vorangestellten Operator & gekennzeichnet). Außerdem wollen Sie die Zwischenräume vereinfachen, so dass nur noch ein Leerzeichen zwischen den Wörtern steht.

  Rufen Sie den Bearbeitungsbefehl auf, geben Sie `s/\s+(\w+)\s+(&)/ const \1 \2/g` und klicken Sie auf OK. Das `g` am Ende des regulären Ausdrucks bewirkt, dass der reguläre Ausdruck jedesmal neu kompiliert wird, um die Referenz zu sichern.

  Ausgabe: `void MyClass::DoStringOps( const String &foo, const String &bar String *p, const int &a, const int &b )`

  Erledigt! Was passierte hier? Es wurde nach Leerzeichen (`\s+`) gefolgt von einem oder mehreren alphanumerischen Zeichen (`\w+`) gefolgt von einem oder mehreren Leerzeichen (`\s+`) gefolgt von einem Ampersand (&) gesucht und dabei der alphanumerische Abschnitt und das Ampersand (&) gesichert, um diese beim Ersetzen wiederzuverwenden. Dann haben wir den übereinstimmenden Teil der Zeile ersetzt durch ein Leerzeichen gefolgt von const gefolgt von einem Leerzeichen gefolgt vom gesicherten Abschnitt (`\1`) gefolgt von einem Leerzeichen gefolgt vom gesicherten Ampersand (&) (`\2`).

  In einigen Fällen war war der gesicherte Abschnitt String, in einigen int, so dass das Benutzen der Wortklasse `\w` und des `+`-Zeichens zum Angeben von ein oder mehrere sich als wertvoll erwies.

Diese Befehle sind extrem vielseitig, aber obwohl sich deren Ausführung Rückgängig machen lassen, empfehlen wir ein wenig zu üben, bevor Sie diese Befehle für ernsthafte Arbeit einsetzen. Wenn Sie geübt im Umgang mit regulären Ausdrücken in Perl oder mit sed sind, ist dies sehr hilfreich dabei.