Sven Guckes und Vim 9: Schnellere Scripts, weniger interne Schnittstellen

Vim 9 wird dem früh verstorbenen Sven Guckes gewidmet sein. Dabei lässt die neue Version schon lange auf sich warten – aber das Warten lohnt sich.

In Pocket speichern vorlesen Druckansicht 7 Kommentare lesen
Lesezeit: 5 Min.
Von
  • Martin Gerhard Loschwitz
Inhaltsverzeichnis

Hektik und überstürztes Handeln lässt sich den Entwicklern von Vim, der verbesserten Alternative zum klassischen Kommandozeileneditor Vi, wirklich nicht vorwerfen: Zwischen den Major-Releases vergeht gern auch schonmal ein ganzes Jahrzehnt. Das dürfte nicht zuletzt darauf zurückzuführen sein, dass Projektleiter und Vim-Erfinder Bram Moolenaar eine relativ kleine Gruppe von Menschen um sich geschart hat, die regelmäßig am Editor arbeiten. Böse Zungen behaupten gar, Vim sei bis heute im Grunde eine One-Man-Show. Und ganz von der Hand zu weisen ist die Vermutung auch nicht. Denn seit der offiziellen Veröffentlichung von Vim 8.0 ist auch schon wieder einige Zeit vergangen – laut eigener Aussage von Moolenaar dauern die Arbeiten an Vim 9 weiter an.

Über die Entwicklungsmailingliste des Editors halten Moolenaar und sein Team Vim-Fans über Neuigkeiten in Sachen Version 9 auf dem Laufenden. Aktuell sieht es so aus, als könne Vim 9 bald auf die Zielgeraden einbiegen. Drei große Punkte wollen die Entwickler dafür abarbeiten – das erste Thema bezieht sich auf Vims eigene Scripting-Engine.

Die hat in der Community durchaus eine Reihe von Anhängern: Nicht wenige, die Vim täglich nutzen, haben mit der Vimscripts-Funktion den Editor perfekt an ihre eigenen Bedürfnisse angepasst. Fakt ist, dass Vimscripts eine riesige Menge an Features bietet, mit denen sich nahezu jedes Verhalten des Editors steuern lässt. Das Syntax-Highlighting ist ein – wenn auch eher einfaches – Beispiel für die Fähigkeiten der Vim-internen Scripting Engine. Andere Features umfassen die Option, Wörterbücher dynamisch einzubinden oder per if-Direktive bestimmte Einstellungen auf Basis externer Faktoren zu setzen. Allerdings: Je nach Art und Umfang der geladenen Skripte machen diese Vim langsam und seine Benutzung zäh.

In Vim 9 soll genau das anders werden: Den Compiler, der aus den Befehlen im Vimscripts-Format Code für den Editor macht, haben dessen Entwickler bereits in Angriff genommen und dabei zu großen Teilen neu geschrieben. Die lange Zeit, die die noch in Vim 8 zu findende Vimscripts-Implementierung benötigt, hängt nach Aussage von Moolenaar mit der Art und Weise zusammen, wie der alte Vimscripts-Interpreter implementiert ist. Anders als Vim 8 setzt Version 9 daher nicht mehr auf lokale Variablen und Dictionaries. Die Mühe macht sich bezahlt: Bei zumindest eingeschränkter Kompatibilität zu den Vimscripts des Vorgängers braucht Vim 9 für das Ausführen von Scripts mit derselben Funktionalität nur etwa ein Fünftel der Zeit. Wer Scripts in Vim ausgiebig nutzt, sehnt die neue Version also herbei.

Während die Vim-Entwickler sich den Scripting-Layer des Editors ohnehin zur Brust nehmen, wollen sie diesen auch gleich noch aufmöbeln und ihm neue Features spendieren. Profitieren davon sollen besonders Einsteiger, die sich an die recht komplexe Syntax der Vim-Skriptsprache noch nicht gewöhnt haben – denn insgesamt soll die Struktur der Skripte einfacher werden und die Skriptsprache eingängiger.

Beispiele dafür sind etwa die Kommandos a: und s:, mit der sich in Vim 8 noch Argumente und lokale Variablen innerhalb eines Skriptes definieren lassen. Der neue Skript-Style namens Vim 9, der nicht rückwärtskompatibel zur Vorgängerversion sein wird, mistet deshalb konsequent aus und wirft diese teils historischen Altlasten über Bord. Obendrein will Moolenaar die Syntax von Scripts im Vim-9-Stil zumindest zum Teil an die Syntax angleichen, die Entwickler von anderen Programmiersprachen her kennen.

Vim bietet seit vielen Jahren die Option, über unmittelbar in das Tool integrierte Interpreter verschiedene Skriptsprachen direkt auszuführen. Bis dato ist das so implementiert, dass in Vim tatsächlich ein Programm für jeden Interpreter dieser Art existiert, der üblicherweise direkt aus den Ursprungsquellen jenes Programmes stammt und an Vim angepasst ist. Um Vim dann mit der jeweiligen Funktion zu kompilieren, installiert der Administrator das jeweilige Entwicklungspaket der Skriptsprache und konfiguriert Vim vor dem Kompiliervorgang entsprechend.

Diese Art von Schnittstelle will Moolenaar aus Kompatibilitätsgründen zwar nicht unmittelbar abschaffen – doch wird Vim 9 einen Feature-Freeze für sie verhängen. Das Ziel ist künftig stattdessen, Vim besser in die Lage zu versetzen, die Interpreter der Skriptsprachen direkt als externe Ressource zu nutzen. Statt ein lokales Python-Plugin zu haben, führt Version 9 künftig also Python selbst unmittelbar aus. Die Änderung betrifft aber nicht nur Python, sondern sämtliche aktuell von Vim auf diese Weise unterstützten Skriptsprachen. Obendrein wird Vim mit diesem Verfahren auch andere als die bisherigen Skriptsprachen anbinden können, etwa Go.

Wann genau mit Vim 9 zu rechnen ist, kann Bram Moolenaar einstweilen noch nicht im Detail prognostizieren. Nach dem kürzlichen Tod von Sven Guckes, der in der Vim-Szene ausgesprochen aktiv war, hat Moolenaar aber bereits bekannt gegeben, dass Vim 9 Guckes offiziell gewidmet sein wird.

(fo)