Sitzungsnavigation: keine Veranstaltung ausgewählt. (Veranstaltung wählen.)

Der Editor VIM (ITG/slu)




1. Allgemeines

Vim ist ein Editor, kein Textverarbeitungsprogramm. Mit vim ist keine typographische Textgestaltung möglich, typische Textverarbeitungsfunktionen wie etwa Fußnotenverwaltung stehen nicht zur Verfügung. Vim dient ausschließlich zur Bearbeitung der "reinen" Textsubstanz. Es wird auch zur Erzeugung und Bearbeitung von Computercode (Programmen) eingesetzt.

Vim ist für alle gängigen Betriebssysteme kostenfrei verfügbar (https://www.vim.org/download.php). Es handelt sich um sog. "Charity Ware", d.h. die Nutzer werden zu einer Spende für einen guten Zweck aufgefordert.

2. Konfiguration

Die userspezifische Konfiguration von vim wird in der Datei _vimrc (unter Windows) bzw. .vimrc (unter Linux; im DHVLab ist eine geeignete Version im Ordner /files/courses/Korpling_MA abgelegt) festgelegt. "rc" steht für "run control". Sowohl unter Windows wie auch unter Linux muss die Datei im Homeverzeichnis des Users liegen (unter Windows normalerweise: c:\Benutzer\[Anmeldename]). Vim sollte niemals ohne eine an die persönlichen Erfordernisse angepasste vimrc-Datei verwendet werden. Der Inhalt der Datei wird von Vim beim Programmstart gelesen.

" VIM-Konfigurationsdatei zur Verwendung auf Windows-Rechner. Abzuspeichern im Homeverzeichnis des Users (z.B. c:\users\[Benutzername] oder c:\Benutzer\[Benutzername]
" Einzelne Zeilen können durch Voranstellung eines doppelten Anführungszeichens (")
" deaktiviert bzw. durch deren Entfernung aktiviert werden
" Download (Win): http://www.kit.gwi.uni-muenchen.de/wp-content/uploads/2015/03/_vimrc
" Download (Linux): http://www.kit.gwi.uni-muenchen.de/wp-content/uploads/2015/03/.vimrc
source $VIMRUNTIME/mswin.vim " Laden der VIM-Skript-Datei mswin.vim, die VIM so konfiguriert, dass es sich in wie von Windows-Programmen gewohnter Weise bedienen läßt (v.a. spezielle Tastenkombinationen wie z.B. ctrl-c ⇒ copy); funktioniert auch unter Linux-Systemen wie z.B. dem Desktop des dhvlab
behave mswin " Windows-typisches Verhalten, d.h. von Windows-Usern gewohnte Tastenkombinationen funktionieren auch in VIM (z.B. ctrl-c ⇒ copy und ctrl-v ⇒ paste) 
set helplang=de " Sprache der Hilfefunktion. "de" meist wirkungslos, da nur Englisch verfügbar
set history=200 " Anzahl der in der Datei _viminfo protokollierten Befehle und Suchmuster
set hlsearch " Bei Suche nach Zeichenfolgen werden Treffer farblich hervorgehoben
set incsearch " Bei Suche nach Zeichenfolgen wird jeweils der erste Treffer angezeigt, der dem bis dahin eingegebenen Suchmuster entspricht
set keymodel=startsel,stopsel " 
set ruler " Anzeige von Zeilen- und Spaltennummer (rechts unten)
set selection=exclusive
set selectmode=mouse,key " Textmarkierung/-auswahl mit Maus und Tastatur
set whichwrap=b,s,<,>,[,]
set ignorecase " Groß-/Kleinschreibung bei Suchvorgängen irrelevant
" set noignorecase " Groß-/Kleinschreibung bei Suchvorgängen relevant
syntax enable " Farbliche Paraphrasierung von Code-Syntax
" colorscheme desert " Farbschema mit schwarzem Hintergrund
colorscheme default " Standard-Farbschema 
set fileformats=dos,unix,mac " Zeilenende-Kodierungen, die VIM beim Öffnen einer Datei berücksichtigt bzw. auf die eine Datei geprüft wird
set fencs=utf-8,ucs-bom,latin1 " Zeichenkodierungen, auf die eine Datei beim Öffnen nacheinander getestet wird (in der gegebenen Reihenfolge)
set encoding=utf-8 " Von VIM intern (z.B. beim Schreiben in die Datei _viminfo) verwendete Standardkodierung 
set fileencoding=utf-8 " Standardkodierung beim Speichern von Dateien
set nu " Anzeige von Zeilennumerierung
set tabstop=2 " Anzahl von Bildschirmspalten pro Tabstop
set guifont=Courier_New:h12:cANSI " Auswahl des Fonts, der von gVim verwendet werden soll. Wichtig ist, dass dieser auf dem System auch verfügbar ist
set autoindent " Automatische Übernahme der Zeileneinrückung bei Einfügen eines Zeilenumbruchs
" autocmd GUIEnter * simalt ~x " veranlasst gvim, mit maximiertem Fenster zu starten

Sämtliche in der _vimrc festgelegten Einstellungen können während der Arbeit mit dem Programm jederzeit geändert werden. Anstelle von "set" kann auch die Kurform "se" verwendet werden.

# Anzeige von Zeilennummern: 
:se nu         # Einschalten von Zeilennummern; 
:se nonu       # Ausschalten
:se fenc       # Dateikodierung; vorzugsweise utf-8; weitere: latin1, utf-16, utf-32 etc.
:se fileformat # dos, unix/linux, mac

:se nowrap # lange Textzeilen werden nicht auf mehrere Bildschirmzeilen umgebrochen
:se wrap   # lange Textzeilen verteilt auf mehrere Bildschirmzeilen 
 
  • Manche Schriftarten stellen Sonderzeichen nicht dar (kleine Quadrate als Platzhalter). Eine große Anzahl von Glyphen enthält die Schrift Courier_New (wenigstens unter Windows). 
  • Farbschemata können ausgewählt werden über das Menü "Editieren" ⇒ "Farbschema ..." (alternativ durch das Kommando ":colorscheme [name des Farbschemas]")

3. Die "Modi" von Vim

Vim wird auch als "modaler" Editor bezeichnet, da er verschiedene "Modi" kennt. Die Eingabe von Text ist nur im sog. Einfüge-Modus möglich. Neben diesem existiert vor allem noch der Kommandomodus. Im Kommandomodus haben sämtliche Tasten auf der Tastatur Sonderfunktionen. Um vom Kommandomodus in den Einfügemodus zu gelangen kann man folgende Tasten verwenden:

i  # "insert"; Einfügemarke wird *vor* das Zeichen gesetzt, auf dem der Cursor steht
a  # "append"; Einfügemarke wird *hinter* das Zeichen gesetzt, auf dem der Cursor steht
I  # Einfügemarke wird an den Anfang der aktuellen Zeile gesetzt
A  # Einfügemarke wird an das Ende der aktuellen Zeile gesetzt
o  # "open"; Cursor am Anfang einer neue Zeile unterhalb der aktuellen Zeile
O  # Cursor am Anfang einer neue Zeile oberhalb der aktuellen Zeile

Das Drücken der Escape-Taste führt stets in den Kommandomodus. In welchem Modus man sich befindet, lässt sich u.a. an der Gestalt des Cursors erkennen: Im Kommandomodus hat er die Form eines Rechtecks, im Einfügemodus ist er ein schmaler Strich ("Einfügemarke").

# Kommandomodus
ga (Anzeige des Zahlenwerts des Zeichens, auf dem sich der Cursor befindet):

Fenster des Editors Vim mit dem IPA-Zeichen für Schwa (hex 0283)

Übersicht über die wichtigsten Tastenbefehle im Kommandomodus:

4. Bewegen in der Datei, löschen, kopieren, einfügen

gg     # Cursor an den Anfang der Datei
G      # An das Ende der Datei
0      # An den Anfang der Zeile
$      # An das Ende der Zeile

dd     # löscht die Zeile, in der sich der Cursor befindet
3dd    # löscht die Zeile, in der sich der Cursor befindet und die zwei Zeilen darunter
D      # löscht den Zeileninhalt von der Position des Cursors bis zum Zeilenende

yy     # nimmt die Zeile, in der sich der Cursor befindet in den Zwischenspeicher
p      # setzt den Inhalt des Zwischenspeichers an der Stelle des Cursors ein

o      # erzeugt eine neue leere Zeile und wechselt in den Eingabemodus

u      # "undo" - macht Änderungen rückgängig. Mehrfaches Drücken von u geht in
       # in der Änderungshistorie zurück

ctrl + r     # "redo" - schreitet nach Verwendung von undo in der Änderungshistorie 
             # wieder vorwärts

5. Öffnen, Speichern, Schließen

Kontextmenü in Windows ⇒ beliebige Dateien mit vim öffnen: Rechter Mausklick auf Dateisymbol ⇒ "Bearbeite mit Vim" / "Edit with vim":

Kontextmenü in Windows mit Option zum Editieren einer Datei mit Vim

# Speichern einer Datei:
:w
# Speichern und verlassen einer Datei: 
:wq
# Verkettung mehrerer Kommandos durch die "Pipe" (|)
:%s/ab/cd/gc | se fenc=unix | w

6. Suchen

Nach Eingabe des Slash (/) im Kommandomodus können am unteren Fensterrand Suchmuster eingegeben werden. Die Suche erfolgt von der Stelle, an der sich der Cursor aktuell befindet nach unten. Bei Drücken des Fragezeichens (?) wird gleichfalls die Suchfunktion aufgerufen, die Suche erfolgt dann aber von der aktuellen Cursorposition nach oben. Alle Zeichenketten im Text, die dem Suchmuster entsprechen, werden farblich hervorgehoben. Zum Ausschalten dieser farblichen Hervorhebung muss im Kommandomodus :nohl ("no Highlighting") eingegeben werden.

Als Suchmuster können auch Reguläre Ausdrücke verwendet werden. Durch Drücken der Sterntaste (*) wird eine Suche ausgelöst, die das gesamte Dokument nach dem Token durchsucht, auf dem sich der Cursor gerade befindet. Bei jeder Suche werden die Treffer im Dokument farblich hervorgehoben. Durch Drücken der Taste n im Kommandomodus springt der Cursor zum jeweils nächsten Treffer in der Datei (N springt zum nächsten Treffer oberhalb).

# Finde alle Strings "Haus"
/Haus

# Suche nach Tokens, die aus exakt drei Zeichen bestehen
/\<...\>

Die Berücksichtigung der Groß/Kleinschreibung kann beeinflusst werden durch die folgenden Kommandos:

:se ignorecase     " keine Berücksichtigung
:se noignorecase   " Berücksichtigung

Reguläre Ausdrücke in VIM

Bei Verwendung von regulären Ausdrücken gelten im wesentlichen die üblichen Regeln. Allerdings gibt es einige VIM-spezifische Besonderheiten bzw. Erweiterungen. Zu den Besonderheiten gehört vor allem, dass eine Reihe von Metazeichen mit einem Backslash maskiert werden müssen. Sehr nützlich sind die folgenden zusätzlichen Metazeichen bzw. Metazeichenfolgen, die in der Standardsyntax der Regulären Ausdrücke fehlen:

\{-}    ⇒    ein "nicht-gieriger" Wiederholungsoperator ("as few as possible")
\_.     ⇒    "any character including a newline"; ermöglicht zeilenübergreifende Suche

Gut gemachte Dokumentationen zu den Regulären Ausdrücken in Vim:

7. Ersetzen

Für Ersetzungen muss im Kommandomodus zunächst der Doppelpunkt (:) eingegeben werden. Anschließend können am unteren Fensterrand Suchmuster und Ersetzungsstrings eingegeben werden. Als Suchmuster können auch Reguläre Ausdrücke verwendet werden. 

Allgemeine Syntax: 
:[Bereich]s/[Suchmuster]/[Ersetzung]/[Optionen]

[Bereich]: 
1,3                 # Zeile 1 bis inkl. 3
4,$                 # Zeile 4 bis zur letzten Zeile
%                   # Alle Zeilen (alternativ: 1,$)
leer oder .         # aktuelle Zeile

[Suchmuster]: 
Reguläre Ausdrücke

[Ersetzung]: 
String

[Optionen]: 
g ("global" - nicht nur erster Treffer in Zeile, sondern alle)
c ("confirm" - Einzelbestätitigung => y = "yes", n = "no", a = "all", q = "quit")
# Einfaches Beispiel
:s/Haus/Hof/c   # Ersetzt (nur!) das erste Vorkommen innerhalb einer Zeile von "Haus"
                # durch "Hof"

Beispiele für Ersetzungsbefehle:

# Leerzeilen entfernen
:%s/\n/ /gc
# Satzzeichen durch Leerzeichen von Wörtern isolieren
:%s/\([a-zäüöß]\)\([.,;?!:)\]]\)/\1 \2/gc
# XML-Tags entfernen
:%s/<\_.\{-}>//gc    # \_. ⇒ "any character including a newline"
# Ersetzung von Zeichen unter Verwendung von deren hexadezimalen Zahlenwert
# Beispiel: Ersetze das "e" (hex 0065) durch "a":
:%s/\%u0065/a/gc

Sämtliche in einer Datei vorgenommenen Änderungen (Ersetzungen, aber auch manuelle Texteingaben) können durch Drücken des Buchstabens u im Kommandomodus rückgängig gemacht werden. Mit jedem weiteren Drücken des u werden weiter zurückliegende Änderungen des Textes rückgängig gemacht. Durch u rückgängig gemachte Änderungen, können durch ctrl-r wieder zurückgeholt werden.

8. Eingabe von Sonderzeichen

Im Einfügemodus kann wie gewohnt über die Tastatur Text eingegeben werden. Eine Besonderheit besteht in der Möglichkeit, Sonderzeichen über die Eingabe von deren Zahlenwert innerhalb der Unicode-Tabelle in ein Dokument zu schreiben. Zu diesem Zweck muss die Tastenkombination ctrl-q (je nach Konfiguration unter Umständen auch ctrl-v) gedrückt werden. Anschließend muss der Buchstabe "u" (für "unicode") gedrückt und dann der hexadezimale Zahlenwert des gewünschten Zeichens eingegeben werden:

ctrl-q (bei "behave mswin"; unter Linux auch ctrl-v) + u + [vierstellige Hex-Zahl] 

ODER 

ctrl-q + U + [achtstellige Hex-Zahl]

Beispiel: 
ctrl-q + u + 0283 ⇒  LATIN SMALL LETTER ESH

9. Hilfe

Vim verfügt über eine eingebaute Hilfefunktion. Diese ist sehr umfangreich und dadurch meistens eigentlich eher unbrauchbar. Der Aufruf erfolgt durch

:he [Stichwort] # (z.B. :he fileencoding)

Das [Stichwort] kann auch weggelassen werden. Dann wird die Startseite der eingebauten Dokumentation geöffnet.

:he

Die Hilfeseiten enthalten Hyperlinks, die daran erkennbar sind, dass die damit hinterlegten Stichwörter links und rechts von einem senkrechten Strich (sog. "Pipe") begrenzt sind. Ein Doppelklick auf die Stichwörter führt zu den entsprechenden Seiten innerhalb des Hilfekompendiums.

Die eingebaute Hilfe wird verlassen durch

 :q ("quit")

Häufig führt eine Google-Suche am schnellsten zu einer gesuchten Lösung.

# Nützliche Seiten



10. Datei _viminfo

_viminfo (unter Linux: .viminfo): Datei im Homeverzeichnis (unter Windows normalerweise: c:\Benutzer\[Anmeldename]; unter Unix/Linux: /home/users/[Anmeldename]), in der sämtliche Kommandos (u.a. Befehle und Suchmuster) aufgezeichnet werden. Die Kommandos einer laufenden Bearbeitung werden erst in die Datei geschrieben, wenn die Bearbeitung einer Datei durch das Schließen des entsprechenden Fensters beendet wird.

11. Appendix: Historie von Vim

Die Anfänge von vim reichen in das Jahr 1976 zurück. Bis dahin wurden Texte auf Unix-Systemen überwiegend mit dem Editor ed bearbeitet, der stets nur eine einzige Zeile eines Textes auf dem Bildschirm anzeigte. Erst vi, der Vorläufer von vim, der ab 1976 von Bill Joy entwickelt wurde, führte die Möglichkeit ein, größere Passagen eines Textes auf dem Bildschirm darzustellen (vi = visual). Vim wurde dann von Bram Moolenaar als eine Weiterentwicklung des bis dahin nur auf Unix-Computern verfügbaren vi (vim = Vi IMproved, also "verbessertes" vi) ab Ende der 1980er Jahre zunächst für den Computer Amiga entwickelt. Die erste allgemein verfügbare Version von Vim erschien dann 1991, zunächst nur für den Amiga. Seither wurde das Programm stetig weiterentwickelt und steht nunmehr für die wichtigsten Betriebssysteme (Unix/Linux, Windows, Mac OS X) zur Verfügung.

Vim wurde zunächst nur innerhalb der sog. "Shell" verwendet. Die Shell ist ein auf nahezu allen Betriebssystemen vorhandenes Programm, das die Steuerung des Computers durch die Eingabe von Befehlen erlaubt. Mit dem Entstehen des Fensterkonzepts (zunächst Apple, dann Windows) wurde auch eine Fenster-Version von Vim entwickelt. Diese wird als gVim ("graphical Vim") bezeichnet.

Vim ist kostenfrei (eigentlich "charity ware"; es wird um Spenden für soziale Projekte gebeten) und open source-Software. Die jeweils aktuelle Version kann von www.vim.org heruntergeladen werden.

 

Schreibe einen Kommentar