Sublime Text und PHP

Was Texteditoren und IDEs zur PHP-Entwicklung angeht, wechsele ich häufiger mal. Es gibt allerdings einen zu dem ich am Ende immer zurückkehre: Sublime Text 3.

Der Editor selbst ist nicht Opensource, die verfügbaren Plugins sind es aber. Ich werde in diesem Artikel nicht auf die Features von Sublime Text selbst eingehen, sondern auf die Konfiguration, um ihn als PHP Entwicklungsumgebung zu nutzen. Wir fangen mit dem Styling an und kommen dann zu den nötigen Einstellungen, Plugins und Shortcuts.

Basics

Ein wenig Basiswissen, falls unbekannt, will ich doch kurz nennen damit es einfacher ist, diesem Artikel zu folgen.

  • Command Palette CTRL+SHIFT+P öffnet eine Suche über sämtliche in ST zur Verfügung stehenden Funktionen. Es ist hilfreich zu wissen, dass Sublime zur Suche Fuzzy Search verwendet. Will man z.B. die Funcktion „Set Syntax: C“ aufrufen, reicht es in der Suche ssc einzugeben. Sublime findet dann Set Syntax: C und zeigt weitere Ergebnisse darunter in einer Liste an (s. Screenshot unten).
  • Goto Anything mit der Tastenkombination CTRL+P kann man schnell das gesamte Projekt nach Dateien (oder Symbolen wie Klassen/Funktionen/Variablen) durchsuchen. Gibt man nur die Tastenkombination ein, wird nach Dateien gesucht. Stellt man ein @ voran, wird nach Symbolen gesucht, bei einem : wird zu einer Zeilennummer gesprungen. Das ganze arbeitet natürlich ebenfalls über fuzzy search und lässt sich auch kombinieren. So sorgt die Eingabe von bencr@gj dafür, dass die Datei BasicEncryptor an der Stelle der Funktion getJsonPayload() geöffnet wird. Es gibt der Einfachheit halber eine Live-Vorschau wärend man tippt. Mit Enter wird die Datei geöffnet. Wollte man sich nur kurz die Signatur der Funktion ansehen, kann man auch einfach ESC drücken und ist wieder dort, wo man vorher war.
  • Multiple cursors Das können mittlerweile fast alle Editoren, es ist aber auch einfach praktisch. Mit gedrückter STRG-Taste kann man mit der Maus mehrere Cursor platzieren und an diesen Stellen dann gleichzeitig tippen. Häufiger ist wahrscheinlich aber, dass man einen Variablennamen oder ähnliches an mehreren Stellen gleichzeitig ändern will. Mit STRG+D wählt man das Wort unter dem Cursor aus, jeder weitere Druck auf STRG+D führt dazu, dass das nächste Vorkommen ausgewählt wird. Jedes markierte Vorkommen bekommt einen eigenen Cursor, so dass man direkt lostippen kann. ALT+F3 wählt alle Vorkommen eines Wortes (oder einer Auswahl) aus.
  • Einstellungen Im Preferences Menu kann man Einstellungen, Tastenbelegungen, Themes und mehr festlegen. Über Browse Packages landet man im Nutzer-Verzeichnis, in dem Pakete und Einstellungen gespeichert werden. Es gibt immer nicht-editierbare globale Einstellungen (default) und private Einstellungen (user). Will man eine Einstellung verändern kopiert man die Zeile von den default Einstellungen in die user Einstellungen und passt sie nach Wünschen an. Das gleiche gilt für Tatstaturbelegungen.
Command Palette

Command Palette

Goto Anything

Goto Anything

Ich bin sehr schlecht darin, mir Tastenkombinationen zu merken. Sublime Text kommt mir da sehr entgegen, weil man sich hier letztlich nur zwei Kombinationen zwingend merken muss. CTRL+P und CTRL+SHIFT+P.

Package Management

ST hat eine unzählige Fülle an Plugins. Damit man diese installieren kann, muss man sich erst mal Package Control installieren. Einfach den Anweisungen folgen und am Ende ST ein mal neu starten. Gibt man in der Command Palette (CTRL+SHIFT+P) pack ein, sieht man alle zur Verfügung stehenden Funktionen der Paketverwaltung (z.B. Install Package).

Style u. Einstellungen

Jeder passt sich seine Arbeitsumgebung so an, dass er gern damit arbeitet. Ausser VIM gibt es wohl kaum einen Editor, den man mehr konfigurieren kann, als Sublime Text. Ich zeige hier als Beispiel, wie ich mir den Editor einrichte.

Dazu installiere ich als erstes das Paket Material Theme. Dann aktiviere ich das ganze und setze meine Einstellungen. Dazu wähle ich unter Preferences „Settings – User“ und füge die folgenden Einstellungen ein. Man beachte, dass ich als Schriftart Ubuntu Mono benutze, die muss natürlich installiert sein.

{
    "bold_folder_labels": true,
    "color_scheme": "Packages/Material Theme/schemes/Material-Theme-Darker.tmTheme",
    "detect_indentation": false,
    "folder_exclude_patterns":
    [
        ".svn",
        ".git",
        ".hg",
        "CVS",
        ".idea",
        "node_modules",
        "storage/framework"
    ],
    "font_face": "Ubuntu Mono",
    "font_size": 14.0,
    "highlight_line": true,
    "highlight_modified_tabs": true,
    "ignored_packages":
    [
        "Vintage"
    ],
    "indent_guide_options":
    [
        "draw_normal",
        "draw_active"
    ],
    "line_numbers": true,
    "line_padding_bottom": 3,
    "line_padding_top": 3,
    "material_theme_small_tab"                : true , // Set small tabs
    "material_theme_small_statusbar"          : true , // Set small status bar
    "material_theme_compact_sidebar"          : true , // Set compact side bar
    "material_theme_tabs_autowidth"           : true , // Enable autowidth for tabs
    "material_theme_contrast_mode"            : true , // Enable sidebar and panels contrast mode
    "show_panel_on_build": false,
    "tab_size": 4,
    "theme": "Material-Theme-Darker.sublime-theme",
    "translate_tabs_to_spaces": true,
    "trim_automatic_white_space": true,
    "trim_trailing_white_space_on_save": true,
    "word_wrap": false
}

Sobald man die Datei speichert, werden die Einstellungen aktiv.

Ich will eine PHP-IDE!

ST ist nur ein Texteditor, aber man kommt schon sehr nahe an eine IDE ran, ohne an Geschwindigkeit einbüssen zu müssen. Die Plugins, die ich dafür installiere sind:

  • AdvancedNewFile leichteres Erstellen, Umbenennen und Verschieben von Dateien. Mit Super+ALT+N geht es los. Man kann den vollständigen Pfad angeben (mit tab completion) oder einen : vor dem Namen, um die Datei im aktuellen Verzeichnis zu erstellen. Für mehr Features, s. Paketeinstellungen.
  • CSS Completions Autovervollständigung für CSS-Properties.
  • DocBlockr fügt automatisch DocBlocks ein und füllt sie so weit wie möglich aus.
  • Emmet (ex Zen Coding) erleichtert ungemein das Arbeiten mit HTML und CSS. Allein darüber könnte man einen eigenen Artikel schreiben. Ich verweise mal auf die Homepage.
  • PHPCompanion erspart einem viel Zeit bei der objektorientierten PHP-Entwicklung (use Importe, Klassenvariablen inkl. Zuweisung im Konstruktor). Siehe die Tastenkürzel weiter unten.
  • SublimeLinter zeigt einem beim Speichern Fehler im Code an
  • SublimeLinter-php für Fehler in PHP (dafür muss PHP installiert sein)

Und noch eine Reihe Plugins, die speziell für die Entwicklung mit dem Laravel Framework interessant sind.

  • Laravel 5 Artisan erlaubt es artisan Befehle direkt aus ST auszuführen
  • Laravel Blade Highlighter damit ST die Blade Syntax ordentlich erkennt
  • Blade Spacer Ein Laravel-Plugin, welches bei Blade automatisch für Abstand sorgt ( autom. {{ $var }} statt {{$var}}).

Für AdvancedNewFile setze ich mir noch die folgende User-Konfiguration:

{
    "rename_default": "<filepath>",
}

Bei PHPCompanion diese:

{
    "use_sort_length": true,  // uses nach Länge sortieren
    "visibility": "protected" // default für Klassenvariablen
}

Da PSR-2 als Code-Style mittlerweile Standard ist, empfehle ich dafür ein Build-System zu erstellen, so dass man mit CTRL+B seinen Code schnell konform umformatieren kann. Eine praktische Anleitung dazu gibt es bereits von Mike Francis.

Tastenkürzel

Auch wenn ich sie mir kaum merken kann, einige bleiben doch hängen und – gerade für PHPCompanion – muss man einige auch selbst setzen, wenn man die Funktionen ausserhalb der command palette nutzen will. Man öffnet unter Preferences also „Keybindings – User“. Hier folgen nun meine kommentierten Anpassungen:

[
    // macht es bei deutschem Tastaturlayout möglich Zeilen oder Blöcke ein-
    // und auszukommentieren
    { "keys": ["ctrl+7"], "command": "toggle_comment", "args": { "block": false } },
    { "keys": ["ctrl+shift+7"], "command": "toggle_comment", "args": { "block": true } },

    // springt zur Definition eines Symbols
    { "keys": ["f12"], "command": "goto_definition" },

    // weil der default shortcut doof ist
    { "keys": ["f5"], "command": "toggle_side_bar" },

    // wählt alles um den cursor herum aus und erweitert die Auswahl bei wiederholtem
    // Drücken zu den jew. weiter aussen liegenden Klammern oder Anführungszeichen
    { "keys": ["ctrl+shift+space"], "command": "expand_selection", "args": {"to": "scope"} },

    // erweitert einen Klassennamen um den dazugehörigen namespace (fully qualified class name)
    { "keys": ["f9"], "command": "expand_fqcn" },

    // importiert eine klasse bei den use statements
    { "keys": ["f10"], "command": "find_use" },

    // fügt dem Konstruktor einer Klasse neue class properties hinzu
    // und erstellt den Konstruktor, falls er noch nicht existiert
    { "keys": ["f7"], "command": "insert_php_constructor_property" },
]

Und weiter?

Inspiration für diesen Artikel war die Reihe Sublime Text Mastery auf Laracasts. Tierfergehende Informationen und hübsche Animationen zu den hier vorgestellten Features findet man in Matt Stauffers Artikel Sublime Text for PHP developers.

Ein Gedanke zu „Sublime Text und PHP

Schreibe einen Kommentar

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