Fakultät für Informatik der Technischen Universität München,
Lehrstuhl für Theoretische Informatik und Grundlagen der KI


Proseminar im WS 2000/2001

Behind the Screen - Konzepte und Algorithmen eines Texteditors







Seminar-Termin: Montag nachmittags 17.00-18.00, Raum 2705

Ansprechpartner: Stefan Römer


Übersicht

Zu den wohl wichtigsten Werkzeugen bei der täglichen Arbeit am Computer zählt zweifellos ein Texteditor. Mit seiner Hilfe erstellen, betrachten und ändern wir Texte für die verschiedensten Zwecke, beispielsweise, wenn wir E-mails und Briefe verfassen, oder für das Anlegen und die Bearbeitung beliebiger Textdokumente, Programmtexte oder Skripten.

Angefangen von einfachen Editoren, die lediglich das Einfügen und Löschen von Zeichen unterstützen, daneben vielleicht elementares Suchen und Ersetzen von Textstücken gestatten, gibt es ein weites Feld von Texteditoren, bis hin zu den "Arbeitspferden", die eine breite Auswahl von Funktionen anbieten, um häufig wiederkehrende oder komplexe Manipulationen vorzunehmen.

Daneben gibt es eine Reihe weiterer Textwerkzeuge, die für ganz spezielle Aufgaben entwickelt wurden, etwa das Bearbeiten von Tabellen oder die WYSIWYG-Erstellung von Textdokumenten durch Textprozessoren. Mittlerweile ist es so, daß fast jede Anwendung einen eigenen eingebauten Editor mitliefert, der oft dazu von den Befehlen oder der Funktionalität her inkompatibel zu seinen Mitstreitern ist.

In diesem Proseminar wollen wir Arbeitsweise, grundlegende Konzepte und deren Realisierung anhand eines konkreten Editors untersuchen. Dazu dient uns der Texteditor VIM (kurz für Vi IMproved), der am meisten verbreitete und von der Funktionaliät her mächtigste mehrerer sogenannter "Clones" des vi, einem der Standard-Editoren jedes UNIX-Systems. Für einige Vorträge (z.B. Thema 13) ist eine Installation der aktuellen Entwickler-Version dieses Editors notwendig.

Gegenüber vi hat VIM in den letzten Jahren zahlreiche Korrekturen und Erweiterungen erfahren, dazu zählen neben vielen anderen: Verwaltung und Anzeigen mehrerer Texte gleichzeitig, unbegrenztes Rückgängigmachen vorgenommener Änderungen, frei konfigurierbares (farbiges) Hervorheben von Schlüsselwörtern, eine einfache Skriptsprache sowie zuletzt das Ausblenden von Textpassagen nach bestimmten Mustern.

Daneben fand eine Einbettung in verschiedene graphische Oberflächen statt, sowie eine Portierung auf diverse Betriebssystem-Plattformen, sodaß man heute an nahezu jedem Rechner mit diesem Editor arbeiten kann.

Ein Vorteil von VIM - im täglichen Umgang wie auch für dieses Proseminar - ist seine hervorragende Online-Dokumentation. Ebenfalls ist der Programmcode selbst gut kommentiert, da, neben dem Hauptautor, eine Vielzahl freiwilliger Implementierer an diesm Projekt mitarbeiten und laufend Verbesserungen vornehmen. Für das Verständnis des Quelltextes sind eingehende Kenntnisse der Programmiersprache C unabdingbar.


Themen


  Datum Thema Vortragende/r
  1 23.10.2000 Überblick; Modus-Konzept und Hauptschleife Lilith Al-Jadiri
  2     ? Tastenauswertung: Mappings, Macros, Completion und Repetition     ?
  3 30.10.2000 Textspeicherung: Struktur, Buffer-Konzept und Textfenster Jens Jäger
  4 06.11.2000 Textdarstellung: Refresh, Scrolling, Wrapping; GUI-Extras Heinz-Peter Nolte
  5     ? Durch den Text manövrieren: Motion-Kommandos und der Cursor     ?
  6     ? Textänderung: Kleinere und große Modifikationen     ?
  7     ? Suchen, Finden und Ersetzen I: Reguläre Ausdrücke, Substitution     ?
  8     ? Suchen, Finden und Ersetzen II: Pattern Matching     ?
  9     ? Wenn mal was daneben ging: Undo/Redo, Swapfiles und Recovery     ?
10     ? Textformatierung und automatisches Einrücken     ?
11     ? Schaltzentrale im Hintergrund: Autocommands     ?
12     ? Alles so schön bunt hier: Syntax-Highlighting     ?
13     ? Wenn die Übersicht verlorengeht: Folding     ?
14     ? Werkzeuge für die Programmentwicklung: Quickfix und Tags     ?
15     ? Der Ex-Modus: History, selbst definierte Funktionen und Skripte     ?


Hinweise



This site is VIM powered Stefan Römer (Last modification: 2000/07/12-17:48)