jens.hatlak.de / Über mich  
Atari   PHP  
Dreamweaver Manual   Linux  
Akronyme   Mozilla  
  SciTE  
  FASTA-Parser  
  Ich spreche...  

SciTE als PHP-Quelltext-Editor

SciTE Neil Hodgsons SciTE ist ein Quelltext-Editor für Windows, Linux und Solaris. Ich selbst arbeite schon seit ein paar Jahren nur noch damit, nachdem ich zuvor ein großer Fan von Pad war und auch TextEdit öfter einsetzte.

Features

Was einen guten Texteditor von anderen unterscheidet, ist meiner Meinung nach die Unterstützung des Programmierers bei Routineaufgaben. Da ich besonders gerne PHP-Skripte schreibe, konzentriere ich mich im Folgenden auch darauf, was SciTE speziell für diese Sprache bietet.

Viele der beschriebenen Funktionen sind auch in anderen Editoren verfügbar, so viel ist klar. Die Kombination jedoch, zusammen mit der Verfügbarkeit für so viele Plattformen, macht ihn zu etwas Besonderem. Ich z.B. benutze ihn auf meinem Laptop unter Windows und Linux mit denselben Konfigurationsdateien (auf einer FAT32-Partition, von Linux aus über Symlinks angebunden), auf unserem Server (ebenfalls Linux) und in der Uni (Sparc Solaris).

Eingabe

Tastenbelegung.

Orientiert sich am Windows-Standard, ist aber voll konfigurierbar.

Einrückung (Indenting).

Die Tab-Taste ist so konfigurierbar, dass sie Leerzeichen statt Tabs einfügt und das auch auf Selektionen angewandt sowie rückwärts (Einrückungen löschend)! Außerdem kann man z.B. für PHP die erste Zeile nach Funktionsdeklarationen oder anderen Blöcke startenden Sprachkonstrukten automatisch einrücken lassen. Die Einrückungsebenen können durch vertikale gepunktete Linien visualisiert werden.

Nützliche Tastenkombinationen.

Shortcuts wie Ctrl+L (Zeile ausschneiden) oder Ctrl+D (Zeile duplizieren) erleichtern das Arbeiten ungemein...

Abkürzungen.

Mittels Ctrl+B lassen sich definierbare Abkürzungen expandieren, z.B. die im Deutschen recht häufig verwendeten Umlaute zu den entsprechenden HTML-Entities. Die Cursorposition nach der Expansion lässt sich mittels der Pipe (|) festlegen und Zeilenumbrüche mit dem üblichen \n angeben. Leider gibt es bisher nur eine zentrale Abkürzungsdatei statt einer für jeden Benutzer.

Selektionsvarianten.

Ein Feature, das ich selten ausreize: Neben der normalen Selektion gibt es auch die von der Cursorposition zum Klickpunkt (mit Shift) und – besonders nett – die Rechteckauswahl mit Alt. Kombinationen sind natürlich auch möglich.

Oberfläche

Buffers.

Man kann einstellbar viele Dateien in Tabs offnen haben

Bookmarks.

Einfach zu setzen und wieder anzuspringen. Im Prinzip wie ein Breakpoint.

Ausgabebereich mit Fehler-Handling.

Gestartete externe Programme wie Compiler können ihre Ausgaben in einem eigenen Bereich machen. Fehler, deren Ausgabe eine Zeilenangabe enthalten, können durch Doppelklick darauf direkt im entsprechenden Text angesprungen werden.

Visualisierung

Syntax-Highlighting.

Hervorhebung spezifischer Sprachfeatures, aber auch der aktuellen Zeile. Natürlich für jede Sprache einzeln einstellbar

Code-Folding.

Einklappen bestimmter Codeabschnitte (Blöcke, Tags) in Sprachen wie C, Java, HTML und PHP.

Zeilennummerierung.

Wenn man will, kann man sich auch die Zeilen nummerieren lassen. Ctrl+G zum direkten Anspringen einer Zeile tut's aber auch.

Bracket-Matching.

Egal ob geschweifte oder runde Klammer, egal ob öffnend oder schließend: Das passende Pendant wird farblich hervorgehoben (samt Einrückungsebene!) und kann auf Wunsch angesprungen werden.

Optische Zeilenlängen-Markierung.

Manchmal kann man überlange Zeilen nicht vermeiden, aber wenigstens ein Anhaltspunkt, wo's zu lang wird wäre doch angebracht. Mit SciTE kein Problem.

Zeilenenden und Whitespace.

SciTE beherrscht alle gängigen Zeilenenden, also CR+LF (Windows), LF (Linux/Solaris) und CR (Mac). Auch das Konvertieren derselben und das Sicherstellen der Konsistenz bei der Verwendung ist möglich. Whitespace (Leerzeichen und Tabs) kann sichtbar gemacht werden.

Schreibhilfen

Calltips.

Tooltips für Funktionen, z.B. Aufrufparameter und Beschreibung von PHP-Funktionen. Erweiterbar, z.B. durch eigene API-Beschreibungen (lokale Klassenmethoden, ...).

Completion.

Für bekannte Sprachkonstrukte und Funktionen (Symbole), aber auch für einfach so im aktuellen Text vorkommende Wörter, gibt es die Auto-Vervollständigung mittels Tab- oder Return-Taste bzw. Ctrl+I / Ctrl+Return. Tags in HTML oder XML können bei der Eingabe direkt durch das schließende Tag ergänzt werden.

Backend

Konfiguration über ASCII-Dateien.

Die Konfiguration erfolgt größtenteils über einfache ASCII-Dateien, deren Änderungen sich teilweise direkt auswirken. Es gibt eine Datei für globale Einstellungen, eine für Benutzer-spezifische und optional auch lokale in beliebigen Verzeichnissen (hochflexibles Konzept!). Außerdem je eine für jede unterstützte Sprache. Wo es Sinn macht, können Einstellungen abhängig von der Sprache (genauer: dem Lexer oder der Dateiendung) gemacht werden.

Durch WIN/GTK-Abfragen kann man ein und denselben Satz an Konfigurationsdateien für Linux/Solaris und Windows benutzen (Dualboot-Rechner).

Viele unterstützte Sprachen.

u.a. C/C++/C#, HTML, PHP, Perl, Python, Java, JavaScript, Lisp, LaTeX, Pascal, SQL, VB, VBScript und XML

Konfigurierbare, parametrisierbare Kommandos.

Bis zu zehn Kommandos lassen sich frei definieren, parametrisieren (bis zu vier abfragbare Parameter) und an Dateiendungen binden. Auf diese Weise ist es ein Leichtes, CVS oder SCP zu nutzen. Letzteres macht natürlich erst mit einem SSH-Agent richtig Spaß.

Etwas anspruchsvoller ist dann schon das Ersetzen aller im Text vorkommenden Sonderzeichen durch die entsprechenden HTML-Entities. Mit ein bißchen PHP-Kenntnissen (oder dem Skript unten) ist aber auch das kein Problem.

Lua-Anbindung (Scripting).

Ab der nächsten Version (oder schon jetzt mit Bruce Dodsons Version) wird Lua direkt eingebunden und erlaubt Zugriff nicht nur auf das aktuelle Dokument sondern auch auf SciTEs Funktionen.

Suchen und Ersetzen mit RegEx und in Dateien.

SciTE selbst kann bereits Suchen und Ersetzen mit regulären Ausdrücken, Matching und optionaler Beschränkung auf die aktuelle Selektion.

Mit der Angabe eines externen Programms zum Suchen in Dateien ist überdies sogar rekursives Suchen und Ersetzen in Dateien und Verzeichnissen mit regulären Ausdrücken möglich.

Konfigurierbare Hilfeseiten.

Je nach Dateiendung lässt sich auch das Programm für die Hilfefunktion angeben. In Verbindung mit der aktuellen Selektion (ist nichts selektiert, ist das das Wort, auf dem der Cursor steht) ergibt sich so die Möglichkeit, z.B. php.net/<meineFunktion> in Mozilla öffnen zu lassen. Siehe hierzu auch das Skript unten.

Noch ein Tipp für Linux/Solaris-Benutzer: Um problemlos Dateien öffnen zu können, ist es sicher auch von Vorteil, sich ein wenig mit dem GTK-Dateiselektor auszukennen: Da Eingabefeld für den Dateinamen reagiert auf die Tab-Taste und wechselt damit in ein Verzeichnis (wichtig für versteckte, die mit dem Punkt am Anfang) oder setzt die Dateimaske, je nach Kontext. Auch die Pseudo-Verzeichnisse .. und . funktionieren natürlich.

Fertige Konfiguration

Das Einrichten von SciTE ist im Prinzip ganz einfach, aber gerade die Standardeinstellungen sind für PHP nicht allzu sinnvoll. Daher hier meine leicht abgewandelte Konfiguration. Da PHP i.A. in HTML eingebettet wird, befindet sich die Konfiguration dieser Sprache in der Konfigurationsdatei für HTML, html.properties.

Dateien zum Herunterladen

Die Aufteilung der einzelnen Einstellungen nach globaler oder benutzerspezifischer Datei sind von mir eher willkürlich gemacht worden. Hier gilt wie so oft: YMMV.

Erläuterungen

PHP-Manual-Redirect auf localhost

Wenn man einen lokalen Webserver betreibt und über diesen das PHP-Manual verfügbar ist, kann man leicht das Goodie von php.net, Funktionsbeschreibungen durch einfache Eingabe des Funktionsnamens (z.B. php.net/mysql_query) zu erhalten, emulieren. Statt die Adresse zu parsen, kann man auch einfach einen GET-Parameter abfragen, wie ich es hier mache. Dieses Skript kann man dann über einen Browser als Hilfeseite in SciTE für PHP-Skripte angeben und somit direkt die Beschreibung für das Wort unter dem Cursor öffnen lassen.

<?php
if ($_GET["fname"]) {
  if (ereg("Linux", $_SERVER["SERVER_SOFTWARE"]))
    $path = "/pfad/zum/php/manual/";
  else
    $path = "C:\\Pfad\\zum\\PHP\\Manual\\";
  $filename = str_replace("_", "-", $_GET["fname"]);
  $prefixes = array("function", "control-structure");
  foreach($prefixes as $pre) {
    $file = $pre.".".$filename.".html";
    if (file_exists($path.$file)) {
      header("Location: http://localhost/pfad/zum/php/manual/$file");
      exit;
    }
  }
}
?>

uml2ent.php4

Das folgende PHP-Skript (am besten PHP 4.3 oder höher; die Dateierweiterung kann man auch auf z.B. .php ändern) liest eine auf der Kommandozeile angegebenen Datei ein, konvertiert alle in ihr vorkommenden Sonderzeichen in ihre jeweiligen HTML-Entities und schreibt das Ergebnis zurück in die Datei – also ein klassischer Filter. Von der Konvertierung ausgenommen sind die META-Tags, die Tag-Klammern, das Kaufmanns-Und und die Quotes (sowohl single als auch double).

<?php
  $fp = fopen($argv[1], "r+");
  while ($line = fgets($fp, 4096)) {
    if (!preg_match("/<meta .*name=/", $line)) {
      $trans = get_html_translation_table(HTML_ENTITIES, ENT_NOQUOTES);
      $trans["<"] = "<";
      $trans[">"] = ">";
      $trans["&"] = "&";
      $line = strtr($line, $trans);
    }
    $lines .= $line;
  }
  fseek($fp, 0);
  fputs($fp, $lines);
  fclose($fp);
?>

Abkürzungen

Mit den folgenden Zeilen in der Abkürzungsdatei kann man durch einfaches Drücken von Ctrl+B nach Eingabe eines deutschen Umlauts, einer HTML-Tag-Klammer oder Gedankenstrichs diesen direkt in das passende HTML-Entity Konvertieren.

ö=&ouml;
ü=&uuml;
ä=&auml;
ß=&szlig;
Ö=&Ouml;
Ü=&Uuml;
Ä=&Auml;
"=&quot;
>=&gt;
<=&lt;
-=&ndash;
--=&mdash;
&=&amp;

 

Valid HTML 4.0!
Jens Hatlak
6. April 2004