Preise

Schnellstart

Quelldateien

Diese Seite wurde aus den folgenden Quelldateien erstellt:

Kilo ist ein minimalistischer Texteditor, der in weniger als 1000 Zeilen C-Code implementiert wurde (README.md:1-26). Das Projekt wurde von Salvatore Sanfilippo (antirez) entwickelt und dient als Referenzimplementierung für Entwickler, die eigene Editoren oder Kommandozeilen-Schnittstellen erstellen möchten. Die Software steht unter der BSD 2-Klausel-Lizenz und darf frei verwendet, modifiziert und weitergegeben werden (LICENSE:1-24).

Projektübersicht und Funktionsumfang

Kilo zeichnet sich durch seine Unabhängigkeit von externen Bibliotheken aus – selbst ncurses wird nicht benötigt. Stattdessen verwendet der Editor Standard-VT100-Escape-Sequenzen zur Terminalsteuerung (README.md:1-26). Diese Designentscheidung hält die Codebasis kompakt und erleichtert das Verständnis der Implementierung.

Bedienung

Die Bedienung erfolgt über Tastenkombinationen:

TastenkombinationFunktion
Ctrl+SDatei speichern
Ctrl+QEditor beenden
Ctrl+FText suchen (ESC zum Beenden, Pfeiltasten zur Navigation)

Die Syntax-Highlighting-Funktion unterstützt C/C++-Dateien mit Erkennung von Schlüsselwörtern, Zeichenfolgen, Zahlen und Kommentaren (kilo.c:44-263).

Kompilierung und Build-Prozess

Systemanforderungen

  • Betriebssystem: Unix-ähnliches System (Linux, macOS, BSD)
  • Compiler: GCC oder Clang mit C99-Unterstützung
  • Build-Tool: GNU Make
  • Terminal: VT100-kompatibles Terminal

Kompilierungsschritte

Der Build-Prozess ist bewusst einfach gehalten. Das Makefile definiert nur zwei Ziele:

bash
1# Repository klonen
2git clone https://github.com/antirez/kilo.git
3cd kilo
4
5# Kompilieren
6make

Das Standardziel all erzeugt die ausführbare Datei kilo durch Kompilierung von kilo.c mit folgenden Compiler-Flags (Makefile:1-7):

  • -Wall: Aktiviert alle Warnungen
  • -W: Zusätzliche Warnungen
  • -pedantic: Strikte ISO-C-Konformität
  • -std=c99: Verwendet den C99-Standard

Die kompilierte Binärdatei wird durch .gitignore von der Versionskontrolle ausgeschlossen (.gitignore:1-1).

Bereinigung

bash
1# Kompilierte Dateien entfernen
2make clean

Der clean-Target entfernt die generierte Binärdatei (Makefile:1-7).

Architektur und Hauptkomponenten

Datenstrukturen

Die zentrale Konfiguration des Editors wird in der Struktur editorConfig verwaltet (kilo.c:44-263):

c
1struct editorConfig {
2    int cx, cy;           // Cursor-Position
3    int rowoff, coloff;   // Scroll-Offset
4    int screenrows;       // Sichtbare Zeilen
5    int screencols;       // Sichtbare Spalten
6    int numrows;          // Gesamtzahl der Zeilen
7    int rawmode;          // Raw-Mode-Status
8    erow *row;            // Zeilen-Daten
9    int dirty;            // Ungespeicherte Änderungen
10    char *filename;       // Aktueller Dateiname
11    struct editorSyntax *syntax;  // Syntax-Highlighting
12};

Jede Textzeile wird durch die Struktur erow repräsentiert, die sowohl den Rohtext als auch die gerenderte Darstellung (für Tab-Erweiterung) und Syntax-Highlighting-Informationen enthält (kilo.c:44-263).

Terminal-Raw-Mode

Kilo versetzt das Terminal in den Raw-Mode, um Zeichenweise Eingabe ohne Pufferung zu ermöglichen. Die Konfiguration umfasst (kilo.c:200-263):

  • Deaktivierung von Echo (ECHO)
  • Deaktivierung des kanonischen Modus (ICANON)
  • Deaktivierung von Signalzeichen (ISIG)
  • 100ms-Timeout für Leseoperationen

Beim Beenden wird der ursprüngliche Terminal-Modus automatisch wiederhergestellt.

Tastatur-Handling

Die enum KEY_ACTION definiert alle unterstützten Tastencodes, einschließlich Steuerzeichen und Pfeiltasten-Sequenzen (kilo.c:44-263).

Schnellstart-Anleitung

Minimale Ausführung

bash
1# Nach der Kompilierung eine Datei öffnen
2./kilo beispiel.txt
3
4# Neue Datei erstellen
5./kilo neue_datei.c

Die Syntax lautet: kilo <dateiname> (README.md:1-26).

Verifikation

Nach erfolgreichem Start zeigt Kilo den Dateiinhalt mit Syntax-Highlighting an. Die Statuszeile am unteren Rand informiert über den aktuellen Zustand. Bei C/C++-Dateien werden Schlüsselwörter, Typen und Kommentare farblich hervorgehoben.

正在加载图表渲染器...

Aktueller Entwicklungsstand

Das Projekt befindet sich im Alpha-Stadium und wurde innerhalb weniger Stunden entwickelt (README.md:1-26). Die TODO-Liste identifiziert folgende Schwerpunkte (TODO:1-10):

Wichtig:

  • Verbesserung von Tests und Stabilität für einen "nutzbaren" Reifegrad

Mögliche Erweiterungen:

  • Alternative Screen-Sequenzen für TERM=xterm
  • Verbesserung der internen Code-Struktur

Häufige Probleme und Lösungen

Problem 1: Kompilierungsfehler bei fehlendem C99-Compiler

Symptom: Fehlermeldungen bezüglich inkompatibler C-Standards.

Lösung: Sicherstellen, dass der Compiler C99 unterstützt. Das Makefile verwendet explizit -std=c99 (Makefile:1-7). Bei älteren Systemen kann ein Compiler-Upgrade erforderlich sein.

Problem 2: Terminal zeigt Escape-Sequenzen statt formatiertem Text

Symptom: Anstelle der erwarteten Darstellung werden Steuersequenzen wie [?1049h angezeigt.

Lösung: Das Terminal muss VT100-kompatibel sein. Die TODO-Liste erwähnt, dass alternative Screen-Sequenzen für xterm noch nicht implementiert sind (TODO:1-10). Ein Wechsel zu einem kompatiblen Terminal-Emulator (z.B. xterm, gnome-terminal) kann das Problem lösen.

Problem 3: Editor reagiert nicht auf Eingaben

Symptom: Nach dem Start reagiert Kilo nicht auf Tastatureingaben.

Lösung: Überprüfen, ob das Terminal stdin korrekt bereitstellt. Der Raw-Mode-Code prüft isatty(STDIN_FILENO) und schlägt fehl, wenn stdin kein Terminal ist (kilo.c:200-263). Kilo muss direkt in einem Terminal gestartet werden, nicht über Pipes oder Umleitungen.

Problem 4: Warnungen bei der Kompilierung

Symptom: Compiler-Warnungen trotz erfolgreicher Kompilierung.

Lösung: Die Flags -Wall -W -pedantic aktivieren umfangreiche Warnungen (Makefile:1-7). Diese sind für die Codequalität vorgesehen und können in der Regel ignoriert werden, solange die Kompilierung erfolgreich ist.

Nächste Schritte

Nach dem erfolgreichen Schnellstart empfiehlt es sich, die erweiterten Funktionen zu erkunden:

  1. Syntax-Highlighting erweitern: Die HLDB-Struktur in kilo.c kann um weitere Programmiersprachen ergänzt werden (kilo.c:44-263).

  2. Code-Studie: Die kompakte Codebasis eignet sich hervorragend zum Lernen von Terminal-Programmierung und Editor-Implementierung.

  3. Beiträge leisten: Die TODO-Liste bietet Ansatzpunkte für Verbesserungen (TODO:1-10).

Ein Screencast demonstriert die Funktionsweise: https://asciinema.org/a/90r2i9bq8po03nazhqtsifksb (README.md:1-26).