Ohne Schnörkel ermöglicht der Texteditor Enki ein routiniertes Arbeiten an einfachen Skripten und Texten.
Zwei grundverschiedene Arbeiten markieren die unterschiedlichen Einsatzgebiete von Texteditoren: Auf der einen Seite helfen sie, kleine Skripte zu schreiben oder einige Zeilen in einer Konfigurationsdatei zu ändern. Für diese Fälle sind Sie mit Pico beziehungsweise der freien Variante Nano im Terminal oder einem einfachen Editor aus der Desktop-Umgebung gut bedient.
Auf der anderen Seite stehen Editoren, die schon fast eine integrierte Entwicklungsumgebung (IDE) bilden. Emacs und Vim zählen zu dieser Sparte, Kile ist ein Beispiel für eine LaTeX-IDE unter KDE, Winefish ein ebensolches für HTML. Für andere Programmiersprachen und Umgebungen gibt es viele weitere.
Zwischen diesen beiden Extremen siedeln sich eine Vielzahl von Varianten sowie zahlreiche Nischenprodukte für spezielle Aufgaben an. Der Editor Enki [1] orientiert sich an Emacs und versucht dessen extreme Leistungsfähigkeit mit moderner Technologie nachzubilden.
Anforderungen
Was sollte ein guter Editor leisten? Zunächst einmal dient er im Wesentlichen zur Texteingabe, sollte also für die Arbeit mit der Tastatur optimiert sein. Dementsprechend will man auch alle Funktionen über Tasteneingaben erreichen, denn wer möchte schon zur Maus greifen, um eine häufig genutzte Funktion aufzurufen?
Die Software sollte die Möglichkeit bieten, die Tastenkürzel anzupassen. Da sich kaum jemand eine große Anzahl von Tastenkürzeln merkt, ist eine direkte Schnittstelle zu den internen Funktionen ausgesprochen nützlich (siehe Kasten “Die Emacs-Schnittstelle”).
Die Emacs-Schnittstelle
Eine ausgesprochen nützliche Eigenart des Emacs stellt eine Schnittstelle dar, die es erlaubt, alle benannten Funktionen über den Namen aufzurufen. Dabei stehen sogar automatische Funktionen zum Komplettieren bereit. Sie rufen die Funktionen über [Alt]+[X] auf. Die Alt-Taste heißt im Jargon auch Meta-Taste.
[Alt]+[X] bewirkt, dass der Editor am unteren Fensterrand eine kleine Eingabezeile öffnet, in den Sie den Namen der Funktion eingeben. Nach jedem Buchstaben können Sie Editor mittels [Tab] dazu veranlassen, den String zu vervollständigen.
Falls die bisher eingegebenen Buchstaben zu mehreren Funktionen passen, öffnet sich ein weiteres Fenster, das die vorhandenen Möglichkeiten auflistet. Oben sehen Sie den eingegeben Text, ganz unten die Eingabezeile, darüber die durch Komplettierung möglichen Namen.
Unbegrenzte Undo- und Redo-Schritte beim Editieren gehören heute zum Standard. Weniger bekannt ist der sogenannte “Kill-Buffer”, eine Idee, die unter anderem Emacs umsetzt. Dasfunktioniert so: Nach dem Löschen einer Passage (dem “Killen”) speichert der Editor diese in einem Ringspeicher, dem Kill-Buffer, der eine voreingestellte Anzahl von Passagen fasst.
Die jeweils zuletzt gespeicherte Passage setzen Sie durch ein einfaches Einfügen an der Position des Cursors wieder in den Text ein. Allerdings erlaubt es die Software, den Kill-Buffer zu rotieren. Das ermöglicht den Zugriff auf Passagen, die Sie schon früher gelöscht haben. Dieses Konzept erlaubt ein effektives und quasi gleichzeitiges Arbeiten mit mehreren Passagen.
Jeder gute Editor bringt Funktionen zum Suchen und Ersetzen von Textteilen mit. In zweierlei Hinsicht erweisen sich diese aber beim Programmieren oft als unzureichend: Zum einen liegen die Quelltexte größerer Projekte in aller Regel in Form von mehreren Dateien vor. Um nun nicht alle Dateien einzeln und manuell bearbeiten zu müssen, sollte der Editor es ermöglichen, dies in einem Rutsch automatisch zu erledigen.
Die zweite Anforderung ist ebenfalls nicht trivial: Es genügt normalerweise nicht, wenn ein Editor lediglich identische Textteile durch andere, ebenfalls identische Passagen ersetzen kann. Vielmehr ist es normalerweise erforderlich, die gesuchten Teile in Form eines Musters zu beschreiben – üblicherweise kommen dabei reguläre Ausdrücke zum Einsatz – und diese Textteile über Referenzen in den Ersetzungstext zu übernehmen.
Zu den weiteren Anforderungen zählt die Möglichkeit, Textteile zu komplettieren. Das spart Schreibarbeit sowie Zeit und hilft Tippfehler zu vermeiden. Auch der Einsatz von Templates oder Code-Snippets hilft ungemein. Für größere Projekte wünscht man sich zudem Bookmarks sowie Funktionen, um bestimmte Bereiche temporär zu verstecken (“code folding”). Beides dient der besseren Übersicht. Nicht unbedingt erforderlich, aber im täglichen Einsatz hilfreich, ist die Möglichkeit, Makros aufzuzeichnen und zu bearbeiten.
Eine inkrementelle Suchfunktion sollte der Editor aber unbedingt mitbringen. Bei dieser Form der Suche springt der Cursor immer automatisch zu nächsten Position im Text, die mit der Eingabe übereinstimmt. Jeder weitere eingegebene Buchstabe verbessert die Suche. Oft muss man dann den Suchbegriff gar nicht vollständig angeben, die ersten paar Buchstaben genügen.
Abhängig von der verwendeten Programmiersprache können auch automatische Einrückungen und Klammerprüfungen (“brace matching”) wichtige bis unverzichtbare Features darstellen. Eine Syntax-Hervorhebung verbessert zusätzlich die Lesbarkeit von Quelltexten.
Wer die Rechteckauswahl einmal kennengelernt hat, mag sie meist nicht mehr missen. Dabei wählen Sie in einem Dokument Bereiche visuell aus, beispielsweise die ersten drei Spalten in den letzten fünf Zeilen. Obwohl Editoren eigentlich immer zeilenorientiert arbeiten – schließlich sind ja auch die Texte so organisiert – bearbeiten Sie so mit dieser Funktion vertikale Blöcke.
Gott der Weisheit
Wie verhält sich nun der Editor Enki [2], benannt nach dem sumerischen Gott der Weisheit, angesichts dieses Forderungskatalogs? Das Editor-Urgestein Emacs würde mit Blick auf seine mehr als vierzigjährige Entwicklungsgeschichte wohl nur müde lächeln. Bei Enki handelt es sich jedoch um ein ganz junges Projekt, das teilweise neue Wege geht. Andererseits lohnt es sich, die Erfahrungen aus bestehenden Programmen zu berücksichtigen. Daher orientiert sich der Newcomer in gewisser Weise an den Altvorderen, allen voran an Emacs.
Nach dem Start präsentiert sich die Software spartanisch (Abbildung 1). Der gesamte Editor ist in Python geschrieben. Das hat den Vorteil, dass es relativ leicht fällt, das Programm anzupassen, vorausgesetzt, Sie beherrschen Python und verstehen den doch recht komplexen Aufbau. Enki setzt auf die Qt-Bibliotheken. Das ermöglicht eine moderne und ergonomische Oberfläche mit wenigen Zeilen Code. Ein erheblicher Teil des Quellcodes entfällt daher auf alle anderen Aufgaben. Spezielle Features, wie etwa die abtrennbaren Menüs aus Gtk, fehlen jedoch.

Abbildung 1: Das Standardlayout von Enki besteht aus drei Fenstern. Links sehen Sie die momentan geöffneten Dateien.
Für erfahrene Entwicklern mag sich der Quelltext relativ schnell erschließen, für Neulinge ist er sicherlich um einiges zu komplex. Das macht es schwer, einfache Anpassungen vorzunehmen, wie Ergänzungen für die Syntax-Hervorhebung.
Alle Funktionen, die Enki zur Verfügung stellt, rufen Sie auf Wunsch über die Tastatur auf. Allerdings umfasst das nicht den Wechsel zwischen geöffneten Dateien – gerade das wäre aber für Benutzer wichtig, die wirklich viel und schnell mit dem Programm arbeiten wollen. Die Tabelle “Wichtige Tastenkürzel” zeigt, dass sich die Software zumindest im Bereich der Standardfunktionen gut bestückt zeigt. Sie haben zusätzlich die Möglichkeit, die Kürzel ändern. Dazu steht im Menü Settings der Punkt Application shortcuts… bereit.
Wichtige Tastenkürzel
| Funktion | Kürzel |
|---|---|
| Dateifunktionen | |
| Datei öffnen | [Strg]+[O] |
| Datei neu einlesen | [F5] |
| Datei speichern | [Strg]+[S] |
| Speichern als | [Strg]+[Umschalt]+[S] |
| Neue Datei | [Strg]+[N] |
| Datei schließen | [Strg]+[W] |
| Datei drucken | [Strg]+[P] |
| Auswahl | |
| Nach oben erweitern | [Alt]+[Umschalt]+[Pfeil oben] |
| Nach unten erweitern | [Alt]+[Umschalt]+[Pfeil unten] |
| Nach links erweitern | [Alt]+[Umschalt]+[Pfeil links] |
| Nach rechts erweitern | [Alt]+[Umschalt]+[Pfeil rechts] |
| Zum Zeilenende erweitern | [Alt]+[Umschalt]+[Ende] |
| Zum Zeilenstart erweitern | [Alt]+[Umschalt]+[Pos1] |
| Auswahl duplizieren | [Strg]+[D] |
| Editieren | |
| Kopieren | [Strg]+[C] |
| Einfügen | [Strg]+[V] |
| Ausschneiden | [Strg]+[X] |
| Zeile einfügen | [Alt]+[V] |
| Zeile ausschneiden | [Alt]+[X] |
| Zeile kopieren | [Alt]+[C] |
| Zeile löschen | [Alt]+[Entf] |
| Undo | [Strg]+[Z] |
| Redo | [Strg]+[Y] |
| Suchen | |
| In der Datei suchen | [Strg]+[F] |
| Im Verzeichnis suchen | [Strg]+[Umschalt]+[F] |
| Weitersuchen | [F3] |
| Rückwärts suchen | [Umschalt]+[F3] |
| Ersetzen | [Strg]+[R] |
| Ersetzen im Verzeichnis | [Strg]+[Umschalt]+[R] |
Für eine Reihe wichtiger Programmiersprachen stellt Enki vorgefertigte Syntax-Hervorhebungen bereit. Abhängig von der eingesetzten Sprache (siehe Tabelle “Unterstützte Sprachen”) funktioniert das unterschiedlich gut. Ganz moderne Sprachen, wie etwa Go von Google, unterstützt Enki bisher gar nicht. Allerdings erweisen sich die Daten auch bei den etablierten Sprachen – zumindest im Fall von LaTeX – als nicht sehr vollständig.
Unterstützte Sprachen
| Skripte | Bash, Batch, Cmake, Makefile |
| Auszeichnungssprachen | CSS, HTML, Markdown, Restructured Text, TeX, XML, YAML |
| Skriptsprachen | IDL, Java, Javascript, Lua, Postscript, POV, Pascal, Perl, Properties, Python, Ruby, Scheme, Spice, TCL, VHDL, Verilog |
| Hochsprachen | C#, C++, D, Fortran, Fortran77 |
| Werkzeuge | Diff, SQL |
Ein Ergänzen fehlender Schlüsselwörter sieht Enki nicht vor, was die Nützlichkeit weiter einschränkt. Das modulare Konzept des Editors soll es den Entwicklern eigentlich leicht machen, Anpassungen vorzunehmen und Ergänzungen als Plugins bereitzustellen. Bisher ist dies aber noch nicht geschehen.
Markdown
Als ein echtes Highlight erweist sich bei Enki die Unterstützung von Sprachen zum Formatieren und Auszeichnen, wie HTML, Restructured Text und Markdown. Hinter letzterem verbirgt sich eine Sprache mit einer einfachen Syntax für Wikis oder Web-Anwendungen ([3],[4]), die auch HTML-Strukturen einbinden kann (Abbildung 2).

Abbildung 2: Wenn Sie Markdown-Texte in Enki eingeben und editieren, haben Sie die Möglichkeit, das Ergebnis sofort in der Vorschau rechts anzuschauen.
Eine Vorschau für den eingegeben Text erhalten Sie mit [Alt]+[P]. Sie benötigen dazu das Paket python-markdown, das sich im Repository vieler Distribution befindet. Ansonsten installieren Sie es mit pip markdown nach.
Anschließend zeigt der Editor das Ergebnis der Eingaben direkt an; Enki unterstützt in diesen Modus WYSIWYG. Das gleiche gilt für Dateien mit HTML und Restructured Text. Allerdings erkennt Enki nicht alle Sprachelemente von Markdown korrekt: So sollte das Konstrukt _Wort_ eigentlich das Wort unterstreichen. Momentan zeigt das Programm es aber kursiv dargestellt an.
Konfiguration
Bei der Installation, die über ./setup.py install erfolgt, kopiert das Skript die Dateien und Verzeichnisse in die Systemverzeichnisse. Das führt dazu, das Enki zunächst nicht in der Lage ist, Einstellungen für einzelne Anwender zu speichern. Dazu müssen Sie zuerst ein Unterverzeichnis .enki/ im Home-Verzeichnis anlegen. Anschließend speichert Enki dort neue Tastenkombination, die in der Datei shortcuts.json landen, und andere Anpassungen.
Derzeit fallen die Konfigurationsmöglichkeiten von Enki noch sehr schmal aus: In Menü Settings gibt es nur die zwei Einträge Settings… und Application shortcuts…. Der erste Menüpunkt stellt nur eine Handvoll Optionen bereit (Abbildung 3). Im zweiten bietet die Software die Möglichkeit, Funktionen mit Tastenkürzeln zu verbinden.
Diese Funktionen decken nur die wichtigsten, elementaren Features eines Editors ab. Für alles weitere wäre ein Ausbau der der Infrastruktur in Form von Plugins nötig. Es stellt sich aber die Frage, ob ein Programmierer zunächst den Editor weiterentwickeln will, bevor er an seinem eigentlichen Projekt arbeitet.
Insbesondere fehlt hier die Möglichkeit, bestehende Highlighting-Muster anzupassen oder zu ergänzen, was aufgrund einiger Fehler aber dringend erforderlich wäre. Aber auch so wichtige Funktionen wie Möglichkeit Snippets zu nutzen suchen Sie bisher vergebens.
Dafür funktioniert die inkrementelle Suchfunktion und das Ersetzen (auch mit Mustern) schon recht gut. Die Komplettierungen erfordern zwar etwas Eingewöhnungszeit – sie funktionieren wie bei einer Textverarbeitung – arbeiten aber einigermaßen zuverlässig.
Fazit
Nach einem ersten Blick fällt die Bilanz von Enki eher dürftig aus. Die Ansätze erscheinen interessant, heben sich aber in keiner Weise von denen bestehender und wesentlich leistungsfähiger Editoren ab. Für die praktische Arbeit ist Enki daher im Moment nur bedingt zu empfehlen.
Zwar geht die Arbeit mit dem Editor einfach und schnell von der Hand, es fehlen aber viele Komfortfunktionen für größere Projekte. Für den Einsatz als Schreibprogramm ermangelt es Enki an einer Rechtschreibprüfung, für die Eingabe von Quelltexten bietet es nicht genug nützliche Funktionen – insbesondere hinsichtlich des Komplettierens.
Das Vorhandensein einfacher vertikaler Editierfunktion erscheint zwar nett, doch aufgrund des geringen Reifegrades sind sie noch nicht wirklich vonnutzen. Dagegen fehlen wesentliche Features wie Kill-Buffer und die Möglichkeit, externe Programme zu starten.
Trotz aller momentanen Einschränkungen lohnt es sich jedoch, Enki im Auge zu behalten: Der Editor weist zumindest zahlreiche gute Ansätze auf.
Infos
[1] Enki: http://enki-editor.org
[2] Bedeutung des Namens: http://de.wikipedia.org/wiki/Enki
[3] Projektseite Markdown: https://de.wikipedia.org/wiki/Markdown
[4] Information zu Markdown: http://daringfireball.net/projects/markdown/






