Sublime Text: Viele Stärke und eine unverzeihliche Schwäche

Die Frage nach dem besten Textseditor für den Mac ist nach wie vor unbeantwortet. Sublime Text bringt mich der Antwort ein grosses Stück näher, ist für meine Zwecke aber nicht der Weisheit letzter Schluss.

Wenn man Mac OS 10.15 alias Catalina installiert, müssen die Programme mit 32-bit-Architektur über die Klippe springen. Auf meinem Macbook hat es einige altgediente Programme erwischt, die ich jetzt ersetzen muss – was immerhin einige Beiträge hier im Blog abwirft.

Eines der auf der Strecke gebliebenen Programme ist Text Wrangler. Das ist der Texteditor, den ich auf dem Mac seit Jahren benutze. Ich schätze ihn, weil er mit Apple Script kooperiert und deswegen gut für Automatisierungsaufgaben geeignet ist. Im Beitrag  Wegen Dingen wie AppleScript habe ich Apple noch nicht abgeschrieben habe ich ein solches Projekt beschrieben: Ich exportiere die Textelemente aus meinen Final-Cut-Projekten, damit sie im Korrektorat gegengelesen werden können.

BBEdit ist in meiner Welt nicht mehr der letzte Schrei

Wenn man nach einer 64-bit-Variante sucht, dann wird einem vom Hersteller beschieden, es gebe das Programm nicht mehr. Man solle stattdessen auf BBEdit umsteigen. Was ich nicht getan habe. Mir gefällt die Optik nicht sonderlich gut und mir ist der Preis von 50 US-Dollar zu hoch.

Darum benötige ich eine Alternative. Am liebsten wäre mir, es gäbe Notepad++ für den Mac. Doch dieser Wunsch wurde bislang nicht erhört. Darum ist an dieser Stelle der Moment gekommen, Sublime Text anzusehen. Das ist einer der populärsten Editoren überhaupt. Und den gibt es für Windows und Mac.

Da ich mich oben als kleiner Geizhals geoutet habe, ist allerdings zu sagen, dass Sublime Text teurer ist als BBEdit. Der Editor kostet 80 US-Dollar, was für meine Zwecke zu teuer wäre. Ich brauche den Editor häufig, aber nicht täglich. Andererseits: Wenn er so toll wäre, dass er mich restlos überzeugt, könnte ich ihn unter Windows und Mac einsetzen. Und das wiederum würde einen etwas höheren Preis rechtfertigen.

Er kann auch Markdown!

Die Optik gefällt mir jedenfalls ausgezeichnet: Sublime Text präsentiert sich viel moderner als Notepad++ und um Welten hübscher als TextWrangler oder BBEdit. Er nutzt ein hübsches dunkles Theme – aber selbstverständlich darf man das Theme wechseln. Man kann, wenn man will, im Internet nach Themes suchen, bis man schwarz wird (zum Stichwort «sublime text themes» hält Google 14,6 Millionen Ergebnisse bereit). Oder man bastelt sich sein Theme selbst. Den passenden Texteditor-Theme-Editor gibt es natürlich im Netz.

Die unverzichtbaren Funktionen

Sublime Text ist ein Programm, mit dem Leute Quellcode aller Art bearbeiten wollen. Und darum gibt es ein paar Funktionen, die absolut unverzichtbar sind:

  • Unterstützung für viele offene Dateien: Die werden als Reiter angezeigt. Aber nicht nur: Man kann Dateien auch nebeneinander in Spalten, untereinander in Zeilen oder sogar rasterförmig anzeigen. Diese Optionen finden sich in View > Layout.
  • Code-Highlighting: Schlüsselwörter werden, abhängig von der Programmier- oder Auszeichnungssprache, farbig markiert. Bei View > Syntax stehen ungefähr Dutzend Sprachen zur Auswahl: Von ActionScript über Apple Script bis hin zu HTML, CSS, Erlang, Java und JavaScript, Latex, PHP, Pearl, Python und Pascal. Und da auch Markdown im Angebot ist, erlaube ich mir, diesen Blogpost auch mit dem Schlagwort Markdown zu taggen.
  • Zeilennummerierung
  • Hilfsfunktionen wie automatische Code-Vervollständigung, Ein- und Ausblenden von Codeblöcken, Hilfe beim Schliessen von geöffneten Tags, Klammern, Anführungszeichen. Und so weiter.

Hilfreich ist auch, wenn der Editor einen dabei unterstützt, auch in grossen Dateien und Datenbeständen schnell zu navigieren. Und für diesen Zweck hat Sublime Text einiges zu bieten. Es gibt am rechten Rand eine (über View > Hide/Show Minimap ein- und ausblendbare) Miniatur des ganzen Dokuments, über die man auch bei langen Dateien per Mausklick an eine beliebige Stelle springt.

«Gehe irgendwohin»

Eine zweite nützliche Navigations-Funktion ist Goto Anything. Sie wird durch Ctrl + p ausgelöst und hilft einem, Dateien zu öffnen und zu wechseln. Mit @ springt man zu Symbolen (bei HTML-Dateien z.B. IDs), mit # sucht man in der Datei und via : springt man zu einer Zeile.

Das ist so eine Funktion, die einem erst in Fleisch und Blut übergehen muss – die man dann aber nicht mehr missen will.

Das gilt auch für die Command Palette, die im Menü Tools steckt und die per Tastatur mit Ctrl + Shift + p gestartet wird. Es erscheint ein Eingabeprompt, über den man per Texteingabe irgendeinen Befehl aufrufen kann. Man kennt das von InDesign und dem Schnell anwenden-Befehl. Dort findet man nicht nur die Befehle, die man via Menüs erst mühsam suchen müsste. Man ruft auch Formate, Scripts und Variablen auf – sodass ich mich frage, warum ein solcher Befehls-Prompt nicht vom Betriebssystem standardmässig bei allen Programmen angeboten wird, die mehr als drei Menüeinträge anzubieten haben.

Und sehr willkommen ist mir auch der ablenkungsfreie Modus (View > Enter/Exit distraction free mode bzw. Shift + F11): Vollbild, eine kleine Menüleiste und sonst nur der Text.

Bei diesen Grundfunktionen überzeugt Sublime Text auf der ganzen Linie. Was man darüber hinaus erwartet, hängt vom Einsatzzweck und den persönlichen Vorlieben ab. Ich benötige eine gute Suchen-Ersetzen-Funktion und, wie eingangs angedeutet, Automatisierungsmöglichkeiten.

Ein ganzes Menü, nur fürs Suchen und Ersetzen

Was das Suchen-Ersetzen angeht, gibt es ein ganzes Menü, das nur dieser Aufgabe gewidmet ist. Da gibt es die Möglichkeit, nur in der Auswahl zu suchen oder zu suchen und zu ersetzen (Find > Use selection for find, bzw. Find > Use selection for replace). Man kann auch dateiübergreifend suchen.

Mit Ctrl + f erscheint eine Suchleiste am unteren Fensterrand, die man ständig im Blick hat – und bei der die Suchresultate auch markiert bleiben, wenn man weitertippt. Selbstverständlich darf man für seine Suche reguläre Ausdrücke verwenden. Mit Ctrl +f springt man in die Leiste zurück und passt dort den Suchbegriff an oder ersetzt ihn. Das gefällt mir besser als der Suchdialog von Notepad++ – auch wenn der nicht, wie in klassischen Textverarbeitungen, zum Glück nicht modal ist.

Es gibt die praktische Möglichkeit, alle Fundstellen zu markieren und zu bearbeiten. Das nennt sich Multiple Selections: Mit Ctrl + d weitet man die Markierung auf die nachfolgenden Fundstellen aus, die man dann alle in einem Rutsch editiert. Das habe ich so noch in keinem anderen Programm gesehen – aber es ist eine einleuchtende Funktion.

Bleibt die Frage nach der Automatisierung. Bei Notepad++ verwende ich die Python-Script-Erweiterung. Ich bereinige damit HTML-Dateien (Knoten aus dem HTML kämmen und DIVs, so weit das Auge reicht) und wandle eine Auszeichnungssprache in eine andere um (Texte mit Format).

Hä?

In Sublime Text findet sich im Menü Tools der Befehl Macro. Man startet und stoppt dort die Aufzeichnung seiner Makros und ruft die Beispiel-Makros auf. Ich habe das mit einigen Suchen-Ersetzen-Befehlen ausprobiert, weil das typischerweise das ist, was ich mit meinen Python-Scripts tue.

Doch ohne Erfolg: Nach der Aufzeichnung hat der Befehl Tools > Save macro nichts bewirkt. Kein Dialog zum Speichern ist aufgetaucht. Der Forumspost SublimeText macros are no good hält dafür eine Erklärung bereit: Offenbar werden Suchen-Ersetzen-Befehle nicht aufgezeichnet. Darum war mein Makro leer und entsprechend nicht speicherungswürdig.

Fazit: Das ist für mich leider ein K.O.-Kriterium. So gut mir der Editor sonst gefällt – ich brauche eine zuverlässige, leistungsfähige Möglichkeit direkt im Editor, um Dinge wie die HTML-Aufbereitung durchführen zu können.

Doch gibt es Abhilfe? Diese Anleitung hier legt nahe, dass man Python-Scripts direkt in Sublime Text ausführen kann. Ich öffne also eines meiner Scripte und klicke auf Tools > Build. Es wird bemängelt, Python sei nicht installiert. Dieses Problem lässt sich via Microsoft Store beheben.

Nun bewegt sich tatsächlich was. Allerdings bricht die Ausführung am ersten richtigen Befehl ab, weil der das Editor-Objekt verwendet, das in Sublime Text unbekannt ist. Aber es wäre auch unglaublich fantastisch gewesen, wenn die Notepad++-Scripts hätten eins zu eins auf Sublime Text übertragen werden können.

Wie ich es nun anstelle, um ein Script auf eine geöffnete Datei anzuwenden, ist mir nicht klar. Wenn jemand einen Tipp dazu hat: Bitte ab in die Kommentare damit!

Toll, aber beim Makro schwächelt er

Bis zur Klärung dieser Frage gilt mein vorläufiges Urteil: Sublime Text ist ein toller Editor. Ich kann ihn allen empfehlen, die nicht ganz so spezifische Erwartungen und Anforderungen wie ich habe. Aber für meine Zwecke ist die Makro-Funktion zu wenig ausgereift – so gut mir auch der ganze Rest des Programms gefällt.

Konfiguriert wird der Editor über diese beiden Konfigurationsdateien.

Und der Nerd-Faktor ist unbestreitbar. Klickt man auf Preferences > Settings, dann werden die Konfigurationsdateien Preferences.sublime-settings für die Standard- (%appdata%\Sublime Text 3\Packages\Default) und die Nutzereinstellungen (%appdata%\Sublime Text 3\Packages\User) geöffnet.  Für Konfigurationsänderungen passt man die Datei an – so, wie das schon die Väter unserer Väter gemacht haben. Charmant!

Beitragsbild: Wer JavaScript schreiben muss, der braucht zum Trost einen schönen Editor! (Marc Mueller/Unsplash, Unsplash-Lizenz)

7 Kommentare zu «Sublime Text: Viele Stärke und eine unverzeihliche Schwäche»

  1. Ich empfehle Dir, Visual Studio Code einmal anzuschauen. Das wird zwar als Entwicklungsumgebung und nicht als Texteditor vermarktet, aber eigentlich brauchst Du ja eher einen Code- als einen Texteditor.

    Grosses Plus: es lässt sich per Konfigurationsdatei konfigurieren. 😊

    Aber auch sonst ist es genial, da es sich nicht auf einen Zweck oder eine Programmiersprache beschränkt, sondern ein guter Texteditor und eine Plattform für diverse Extensions ist. Ich arbeite schon einige Jahre damit und habe noch für alles eine gute Funktion oder Extension gefunden.

    Hier einige Beispiele:
    – Microcontroller programmieren mit MicroPython: dank Extension wird der Code direkt auf den Controller übertragen
    – HTML: Live Preview, Änderungen werden sofort angezeigt
    – PHP-Entwicklung: Webserver- und Debug-Extension installiert, kein externer Webserver notwendig
    – JavaScript-Entwicklung: Extension zapft den Chrome Remote Debugger an => Seite läuft im Chrome, gleichzeitig kann ich in VS Code debuggen
    – Buildprozesse: für gulp gibt es eine Extension, welche die Tasks direkt in VS Code ausführt
    – XML: diverse Extensions für Validierung und Formatierung verfügbar

    und für Dich evtl. sehr relevant: für Markup gibt es eine Extension mit Live-Preview.

    Für Deine Makros könntest Du entweder selbst eine Extension programmieren oder aber Tasks nutzen. Damit lassen sich externe Scripts starten, die dann etwas an den geöffneten Dateien ändern. Ich vermute aber, dass Du für einige Deiner Scripts einen Ersatz in Form einer Extension findest.

    1. Gerne! Zu beachten: Visual Studio != Visual Studio Code.

      Visual Studio ist eine kommerzielle Entwicklungsumgebung für .NET. Damit entwickelt Web-Anwendungen mit ASP.NET und Windows-Anwendungen mit Windows Forms oder WPF. Es enthält die dafür notwendigen grafischen Designer sowie einen Compiler. Es ist in einer kostenlosen Variante erhältlich, die früher (wie von Dir vorgestellt) „Express“ hiess. Neuerdings heisst sie „Community“.

      Der Editor dort ist gut, prüft auch gleich den Code etc., aber er ist nur für .NET geeignet. Und abgesehen von kommerziellen Tools gibt es fast keine Extensions.

      Microsoft hat um das Jahr 2015 gemerkt, dass man HTML und CSS nicht sinnvoll in Visual Studio schreiben kann. Deshalb haben sie Visual Studio Code entwickelt. Dieses ist Open Source und richtet sich hauptsächlich an Web-Entwickler. Es enthält keinen Compiler und ist nicht auf eine Sprache fixiert.

      Wenn ich Windows-Anwendungen entwickle, mit Office-Integration und allem, verwende ich nach wie vor Visual Studio. (Dieses läuft auch nur auf Windows.)

      Für alles, das mit Web oder XML zu tun hat, verwende ich Visual Studio Code. Dieses ist für diverse Plattformen verfügbar.

      Es sind also zwei vollkommen verschiedene Produkte, die nur den Namen teilen.

  2. Suchen und Ersetzen geht OOTB pro Datei oder in einem Ordner (auch rekursiv). Dabei kann man nach bestimmten Kriterien filtern. Dafür brauchte ich nie ein Macro.

    Für Beautyfier und Linter gibt es schon seit Sublime Text 2 passende Plugins (HTML, SCSS, js uvm.), ebenso läuft Emmet problemlos.

    Ich arbeite allerdings fast nur unter Linux, da ich gerne auf der Plattform entwickle die auch Zielplattform wird. Macht für mich wenig Sinn auf nem Mac oder Windows zu entwickeln was später auf nem Linux-Server läuft. Kann also sein, dass (wie bei so vielen Dingen) auf Win oder Mac vieles nicht oder nicht so gut läuft.

    Mein Fazit: Bisher kam (unter Linux) bei mir kein Editor an Sublime Text ran und in Kombination mit SubliMerge (diff-tool) und Sublime Merge (git client) geht das Arbeiten extrem flüssig von der Hand. Da ich mit Progrrammierung mein Geld verdiene, ist Zeit einfach Geld und daher hab ich mich für Sublime Text entscheiden.

  3. Hallo zusammen, vielleicht kann mir jemand endlich weiter helfen?

    Ich benutzen nun seit einigen Jahren Sublime Text 3.2.2 auf Deutsch in der Macintosh Version.
    Ewig suche ich schon eine ältere Einstellung, die ich in einer früheren Version auf meinem Windows Betriebssystem nutzte.

    Es ist die Einstellung, wenn man bei geöffneter Software mehrere offene Dateien parallel bearbeitet (Bsp. 10 Dateien), Sublime Text schließt und beim nächsten öffnen der Software, sind alle 10 Dateien immer noch geöffnet, so wie ich sie zuletzt bearbeitet hatte.

    Denn leider nach jedem Schließen/Öffnen der Software gehen alle Einstellungen verloren, sogar die Reiter.

    Wo und wie kann ich das wieder einstellen??? Das wäre so eine große Hilfe für mich, wenn es jemand weiß, wie es genau geht..

    Vielen Dank

    Chrismis

Schreibe eine Antwort zu AdnanAntwort abbrechen