BBEdit vs. vim

Viele Jahre habe ich als zufriedener Bewohner des Auenlandes verbracht, und selbst die nicht mehr ganz so prachtvollen Zinnen von Minas Tirith konnten mich nicht zum Umzug bewegen. Aber kurz vor dem einundelfzigsten Geburtstag des ehrenwerten Bilbo Beutlin ergriff mich eine seltsame, fast zwergische Sehnsucht nach den Minen von Moria.

Etwas weniger allegorisch ausgedrückt: Ich habe dem tüfteligen vim eine zweite Chance gegeben, nachdem ich meinen ersten Versuch mangels Disziplin rasch aufgegeben hatte. Denn so behaglich die Arbeit mit BBEdit auch ist – niemand lässt sich gern nachsagen, er nutze den schwächlichsten der drei großen Texteditoren auf dem Mac.

Gewappnet mit der Aussicht auf Mithril und ausgerüstet mit einem theoretischen Überbau gewöhne ich mich rasch an die auf den ersten Blick verwirrenden Bewegungs- und Markierungskommandos (iTets<Esc>hc2lst) sowie an die häufigen Moduswechsel. Tatsächlich wirkt die Mac-typische Kombination von Alt-, Command-, Shift- und Pfeiltasten nach einigen Tagen vim seltsam unbeholfen und langsam. Die zweite angenehme Überraschung ist die Erkenntnis, dass sich das Verzeichnis von vim-Skripten nicht hinter CTAN oder CPAN verstecken muss.

So lässt sich die ausgefeilte HTML-Unterstützung von BBEdit mit Hilfe weniger Skripte erstaunlich vollständig replizieren: ragtag ermöglicht das schnelle Einfügen und vor allem Schließen beliebiger HTML-Tags und snipMate überträgt die exzellente Snippet-Syntax von TextMate (die den BBEdit-Clippings mindestens ebenbürtig ist). Komplexere Operationen wie die Einbettung von markiertem Text in einen a-Tag, dessen href-Attribut aus der Zwischenablage übernommen wird, lassen sich einfach als Mapping definieren:

vnoremap _a <Esc>`>a</a><Esc>`<i<a href="<Esc>pa"><Esc>

Das sieht vielleicht ein wenig kryptisch aus, erklärt sich aber nach dem Studium der vim-Dokumentation praktisch von selbst. Darüber hinaus kann man die direkte Interaktion mit anderen CLI-Werkzeugen als festes Kommando hinzufügen. Die BBEdit-Funktion Markup > Tidy > Clean Document... etwa sieht in .vimrc wie folgt aus:

command Pretty %!tidy -qi --wrap 0 --show-warnings false --doctype omit --tidy-mark false --show-body-only true --char-encoding utf8

Da tidy mit allen unterstützten Parametern aufgerufen werden kann, ist vim in diesem Punkt sogar deutlich flexibler als die eingeschränkte BBEdit-Implementierung. Dasselbe gilt für die Kompilation von TeX-Dokumenten. Mit BBEdit muss der Aufruf der TeX-Engine in ein längliches AppleScript verpackt werden, in vim übergibt man dagegen einfach die aktuelle Datei:

command Latex :!pdflatex '%'<CR>

Gewisse Vorteile hat das übersichtliche Auenland nur bei der Bearbeitung sehr langer Dokumente und umfangreicher Projekte. Theoretisch lässt vim mit tags keine Wünsche offen, praktisch ist das hierarchische Function Menu in BBEdit sehr viel komfortabler. Dasselbe gilt für den Vergleich der BBEdit-Projektverwaltung mit dem project-Plugin für vim.

Es ist trotzdem beruhigend, dass mich kein Texteditor ewig bindet.