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:
| Tastenkombination | Funktion |
|---|---|
Ctrl+S | Datei speichern |
Ctrl+Q | Editor beenden |
Ctrl+F | Text 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:
bash1# 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
bash1# 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):
c1struct 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
bash1# 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:
-
Syntax-Highlighting erweitern: Die
HLDB-Struktur inkilo.ckann um weitere Programmiersprachen ergänzt werden (kilo.c:44-263). -
Code-Studie: Die kompakte Codebasis eignet sich hervorragend zum Lernen von Terminal-Programmierung und Editor-Implementierung.
-
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).
