Suchfunktion in eclipse richtig (aus)nutzen

Die Suchfunktion in eclipse bzw. ZendStudio kann mehr, als ein simples STRG+F vermuten lässt. Also mal Zeit, kurz was darüber zu schreiben, was einem das (Programmierer)-Leben leichter macht; Programmierer sind ja bekanntlich faule Wesen 🙂

Also, in eclipse und anderen IDEs, die auf eclipse basieren – z.B. ZendStudio, Aptana, usw. – gibt es im Prinzip zwei Suchfunktionen.

  1. Die Suche über STRG+F
  2. Die Suche über STRG+H

Die Suche über STRG+F…

… ist schnell erklärt und man sollte wissen, dass diese Suche nur funktioniert, wenn man ein Dokument geöffnet hat.

sufu1

Den zu findenden Text schreiben und ENTER drücken und man springt zum nächsten Vorkommen. Die Optionen sollten alle selbsterklärend sein.
Hinweis: Die Suche beschränkt sich auf das aktuelle Dokument, auch wenn mehrere Dateien geöffnet sind!

Die Suche über STRG+H…

…ist das eigentliche Highlight in eclipse und ist äußerst mächtig, wenn man sich ein wenig Zeit nimmt, die Optionen zu studieren.

Erstmal ein Einblick in die Oberfläche:

sufu2

Das ganze funktioniert erst, wenn ihr ein Projekt geöffnet habt, allerdings muss keine Datei geöffnet sein.

Sollte euch der Reiter “Remote Search” fehlen, keine Panik, den habe ich deaktiviert. Unten Link den Button “Customize” drücken und dort den Reiter “Remote Search” ausschalten.

sufu3

(Mich hat das ständig genervt, dass dieser Reiter zuerst ausgewählt ist und ich nicht direkt lokal suchen konnte.)

Wie ihr seht, könnt ihr zwar die Suchfunktionen ein- und ausschalten, allerdings nicht die Reihenfolge ändern. Hinweise diesbezüglich nehme ich gerne entgegen.

Okay, meine Erfahrung beschränken sich auf den Suchreiter “File Search”, aber der hat es schon in sich und reicht für meine Zwecke mehr als nur aus.

Ein Beispiel zur Suche

Ich habe ein (PHP)Projekt mit 2.000 Dateien und suche dort alle Vorkommen der mail()-Funktion; evtl. will ich die Funktion durch eine Klasse ersetzen. Also STRG+H, in das Feld “Containing Text” trage ich “mail(“ ein, bei “File name patterns” sage ich “*.php” und den “Scope” setze ich auf “Workspace”. Nun ein Klick auf “Search” und kurz danach erhalte ich alle Ergebnisse sauber nach Vorkommen gegliedert und kann so jeden Treffer sehen. Dabei bekomme ich auch eine Vorschau der betreffenden Zeile und kann anhand dieser Information schon schnell beurteilen, ob dieser Treffer für mein Vorhaben interessant ist oder nicht.

Ich denke mal, bis hierhin kennen sich die meisten schon aus; Interessant wird es dann für folgenden Fall – gleiches Projekt (2.000 Dateien).

Ersetzen Advanced

Es fällt auf, dass es zwar ganz unten einen “Replace” Button gibt, aber kein Feld, mit was denn ersetzt werden soll. An dieser Stelle muss man wissen, dass dieses Ersetzen sich auf den gewählten “Scope” bezieht. Setzt man den Scope auf “Workspace”, dann geht es um das ganze Project, also 2.000 Dateien. Da sollte man vorsichtig sein … und eclipse hilft einem dabei.

Also, erst mal eingeben, was man ersetzen möchte. Als Beispiel benutze ich mal den Fall, dass ich in meinem (PHP)Projekt ca. 230 Links auf ein pdf Dokument habe. Der Name des Dokuments wurde nun kundenseitig geändert (kann ja mal passieren) und das ganze soll nun ASAP korrigiert werden.
Die Aufgabe lautet also: Korrigiere ca. 230 Links in ca. 2.000 Dateien und das schnellstmöglich.

Um das Beispiel gleich komplex zu machen – so lernt ihr wirklich alles kennen – nenne ich das alte Dokument “MeinReport_022010_de.pdf” und ein zweites Dokument heißt “MeinReport_022010_en.pdf” und das ganze soll nun so heißen: “report_de_februar_2010.pdf” und “report_en_februar_2010.pdf”.

Man sieht, die Namen sind sich ähnlich bis auf das de und en.

Der Weg ist nun folgender: Wir benutzen ein Such-RegEx, um die beiden PDF-Dokumente zu finden und ersetzen diese dann in den Dateien automatisch, allerdings wollen wir eine Vorkontrolle, was alles ersetzt werden soll. Und das geht so:

sufu4

Also, erst mal den RegEx eingeben, das ganze auch als “Regular expression” markieren, den “Scope” auf “Workspace” setzen und dann unten auf “Replace…” klicken.

eclipse sucht nun die Treffer und in der nächsten Maske kann man nun die Ersetzung angeben. Diese wäre in unserem Fall “report_$1_februar_2010.pdf”, damit de und en auch richtig eingesetzt werden.

Das ganz besondere ist nun der Button “Preview”, der uns nun alle Treffer in einem Diff anzeigt. So können wir sehen, ob alles richtig läuft, man kann einzelnen Ersetzungsschritte wählen oder ganz unten “Ok” klicken, dann werden alle Treffer ersetzt.

Mit der entsprechenden FTP-Synchronisation – die es leider im “normalen” eclipse nicht gibt, ich benutze ja ZendStudio – kann man nun automatisch die Änderungen an den Server übertragen.

Fazit: Das Problem klang nach viel Arbeit, aber die Powersuche in eclipse bzw. ZendStudio hilft uns dabei, das ganze gelassen in 15 Minuten zu erledigen. Und das war nur ein Reiter der Suche … wie gesagt, die anderen habe ich bisher nicht gebraucht.

2 Gedanken zu „Suchfunktion in eclipse richtig (aus)nutzen

  1. Peter

    die Bilder fehlen, leider….
    Ich kann als Neuling natürlich überhaupt nicht beurteilen, wie relevant der Artikel überhaupt ist. Ein sichtbares Erstellungsdatum und/oder Versionshinweis könnte hilfreich sein.

    Soweit meine Mäkeleien.

    Ansonsten ist es schon gut gemacht!

    Antworten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.