Warum ich meinen eigenen Texteditor baue
Fine, I'll build my own text editor

David Bushell, unzufrieden mit moderner Software, experimentiert mit drei Ansätzen für einen eigenen Texteditor: Canvas, contenteditable und textarea. Er zeigt, wie er mit Canvas rendert, dann auf contenteditable mit plaintext-only umsteigt, um native Auswahl und Undo zu nutzen, und schließlich textarea als performanteste Lösung entdeckt. Dabei behandelt er auch Syntax-Highlighting, Performance-Probleme und die Herausforderungen der Barrierefreiheit. Ein pragmatischer Blick auf die Entwicklung eines minimalistischen Editors.
Sieht aus wie 90 % eines Texteditors mit 1 % der Funktionen.
- tzs
Irgendwann um 1980-81 hatte ich als Student einen Teilzeitjob als Systemprogrammierer/Admin in der Abteilung für Hochenergiephysik am Caltech.
Rob Pike war vor mir als Systemprogrammierer/Admin dort, als er Doktorand in Hochenergiephysik war, aber er ging zu Bell Labs.
Eines Tages beschwerten Karl Heuer, ein anderer Student, und ich uns beide – wie Programmierer das eben tun – über die damaligen Bildschirmeditoren und sagten, wir könnten etwas Besseres schreiben.
Irgendwie wurde daraus ein Wettbewerb, und wir verbrachten beide die ganze Nacht damit, gegeneinander anzutreten und unsere Editoren zu schreiben. Es war größtenteils still, abgesehen vom Tippen, unterbrochen von der gelegentlichen Ankündigung einer Funktion, die jetzt funktionierte, in der Hoffnung, den anderen zu verunsichern.
Am Morgen kam der andere studentische Systemprogrammierer/Admin, Norman Wilson, herein und sah, was Karl und ich getrieben hatten.
Norman erwähnte das in einer E-Mail an Rob Pike. Seine Antwort war ungefähr diese:
> Jeder schreibt einen Bildschirmeditor. Es ist einfach zu tun und gibt ihnen das Gefühl, wichtig zu sein. Sag ihnen, sie sollen an etwas Nützlichem arbeiten.
Nur ein paar Jahre später schrieb Rob Pike einen Bildschirmeditor. Ich frage mich, ob er sich dabei wichtig gefühlt hat? :-)
- akersten
Ja, wer hätte gedacht, dass das <textarea>-Element, das genau für diesen Zweck entwickelt wurde und seit drei Jahrzehnten in Browser eingebaut ist, der performanteste und verhaltenskonsistenteste Weg sein würde, editierbaren Text zu implementieren.
Ich bin ein wenig traurig, dass der Autor dort aufgehört hat, unnötige Komplexität abzubauen ... wir bauen noch keinen Texteditor, wir bauen eine Website mit einem ausgefallenen Eingabefeld. Wenn wir einen richtigen Texteditor bauen wollen, müssen wir auch den Ballast des Webbrowsers ablegen.
- pmkary
Texteditoren sind wie mechanische Uhren oder Füllfederhalter. Es liegt so viel Schönheit in der Mechanik, die sie ausmacht. Für mich gibt es kaum andere Module, die so befriedigend anzusehen sind, wenn sie gebaut werden. Jedes Mal, wenn ich einen neuen finde (einen guten wie diesen), mit allem an Seilen und Rendering und I-Beam-Positionsberechnungen und ... fühlt es sich an wie ein Weihnachtsgeschenk.
- krzyzanowskim
Das Web ist heute wahrscheinlich die beschränkteste Plattform, um einen eigenen Texteditor zu bauen, was Textlayout, Interaktion und all die kleinen Details angeht, die wichtig sein können. Es fehlen immer noch geeignete APIs, um mit dem Betriebssystem-Eingabesystem außerhalb der eingebauten Textfunktionen des Browsers zu interagieren. Deshalb ist der <canvas>-Ansatz so schmerzhaft, und alles andere ist durch die Implementierungsdetails von HTML und Browser begrenzt.
- dang
Kürzlich und verwandt:
So einen wie Sublime Text bauen sie nicht mehr – https://news.ycombinator.com/item?id=49209354 – Aug 2026 (13 Kommentare)
- stillpointlab
Ich habe mir buchstäblich gerade von Fable einen Texteditor schreiben lassen. Nun, um ehrlich zu sein, ich habe ihn die KDE-KTextEditor-Bibliothek umwickeln lassen, die etwa 90 % eines Texteditors ausmacht.
Ich hatte Kate benutzt, was ein LLM als das Ähnlichste zu Sublime Text auf Fedora vorgeschlagen hatte. Aber selbst Kate, die großartig war, hatte zu viel los.
Also habe ich Fable gebeten, den Texteditor-Teil (KTextEditor) zu nehmen und ihn mit Rust und einem LSP-Server zu umwickeln. Es dauerte etwa 2 Tage, aber ich habe einen winzigen, superschnellen kleinen Editor. Ich benutze Sway, um Dinge wie Tabs zu verwalten, Fuzzel steht für die Fuzzy-Dateisuche, Broot für eine Explorer-Ansicht. Ich habe bereits Markdown-Vorschauunterstützung hinzugefügt. Vielleicht komme ich noch zu einer grundlegenden Git-Integration.
Dann habe ich ihn dazu gebracht, diesen kleinen Editor in eine Notizoberfläche zu verwandeln, die ich an eine Mod-m-Tastenkombination gebunden habe, um Notizen in ~/Notes zu führen.
Wir leben in verrückten Zeiten. Ich hoffe, jeder nutzt das, solange er kann.
- nottorp
Da ist wirklich ein FPS-Zähler drauf.
Rendert das Experiment ernsthaft kontinuierlich in einer Schleife?
- Jean-Philipe
OT, aber ich mag das Design dieser Website wirklich. Es ist frisch, es macht Spaß, aber immer noch leicht zu lesen. Liebe auch die KI-Richtlinienseite.