VI Crash
Der VI besitzt 3 Hauptmodi
- Normalmodus (Normal Mode)
Navigation und Bearbeitung von Text im Standardmodus.
- Einfügemodus (Insert Mode)
Text eingeben und bearbeiten.
- Befehlszeilenmodus (Command-Line Mode)
Befehle wie Speichern, Beenden und Suchen ausführen.
Einfügemodus <- i,a,o... <- Normalmodus -> :,/,? -> Befehlszeilenmodus
-> ESC -> <- ESC <-
Normalmodus (Auswahl)
- d löschen
- dd eine Zeile löschen und in ein Register schreiben
- 3dd drei Zeilen löschen und in ein Register schreiben
- dG lösche ab der aktuellen Zeile bis zum Ende und in ein Register schreiben
- d3G lösche ab der aktuellen Zeile bis zur Zeile 3 und in ein Register schreiben
- d0 bis zum Zeilenanfang löschen und in ein Register schreiben
- d$ bis zum Zeilenende löschen und in ein Register schreiben
- y yanken
- yy eine Zeile in ein Register schreiben
- 3yy drei Zeilen in ein Register schreiben
- yG ab der aktuellen Zeile bis zum Ende und in ein Register schreiben
- y5G ab der aktuellen Zeile bis zur Zeile 5 und in ein Register schreiben
- y0 bis zum Zeilenanfang in ein Register schreiben
- y$ bis zum Zeilenende in ein Register schreiben
- x Zeichen löschen
- 3x drei Zeichen löschen
- p paste füge ab der nächsten Zeile ein
- u undo
- /<Suchausdruck> suchen
- n weitersuchen
- N andere Richtung weitersuchen
Befehlszeilenmodus (Auswahl)
- :w schreiben der Datei
- :w! schreiben der Datei übergehe Schreibschutz
- :q beenden
- :q! forciert beenden
- :wq! speichern und forciert beenden
- :e <datei> andere Datei öffnen
- :e # zu vorgehenden Datei zurückspringen
- :r<datei> datei an die aktuelle Stelle angefügt
- :sh kurzes verlassen - mit exit wieder in den vi
- :!<befehl> befehl wird ausgeführt
- :r!<befehl> befehl wird ausgeführt und an die aktuelle Stelle geschrieben
- :4 Cursor springt an vierte Zeile
- :$ Cursor springt an letzte Zeile
- :%s/muster/ersetzung/g
- Einstellungen
- :set ruler Koordinaten einstellung
- :set number Nummerieren der Zeilen
- :set tabstop=2 beim tab wird 2 Zeichen nach vorn gerücket
- :syntax on Farben werden eingeschaltet
Substitutionsbefehle
Grundsyntax
Die grundlegende Syntax eines Substitutionsbefehls lautet:
:s/Pattern/Ersetzung/
- s: Steht für Substitution (Ersetzung).
- Pattern: Das Suchmuster (z. B. ein Wort oder eine Zeichenfolge, die ersetzt werden soll).
- Ersetzung: Der Text, der anstelle des gefundenen Musters eingefügt wird.
Ersetzungen in der aktuellen Zeile
Um "eins" durch "zwei" in der aktuellen Zeile zu ersetzen:
:s/eins/zwei/
- In der Zeile wird nur das erste Vorkommen von "eins" durch "zwei" ersetzt.
Alle Vorkommen in der Zeile ersetzen
Um alle Vorkommen von "eins" in der aktuellen Zeile durch "zwei" zu ersetzen:
:s/eins/zwei/g
- Der g-Schalter steht für global, was bedeutet, dass alle Vorkommen des Musters in der Zeile ersetzt werden.
Ersetzungen in allen Zeilen
Um in allen Zeilen der Datei "eins" durch "zwei" zu ersetzen:
:%s/eins/zwei/g
- % bedeutet alle Zeilen in der Datei.
- Der g-Schalter ersetzt alle Vorkommen von "eins" durch "zwei" in jeder Zeile.
Interaktive Ersetzung
Um eine interaktive Ersetzung durchzuführen, bei der für jedes Vorkommen gefragt wird, ob es ersetzt werden soll:
:%s/eins/zwei/gc
- c steht für confirm (Bestätigung). Vim fragt nach jedem Vorkommen, ob es ersetzt werden soll.
Ersetzungen mit regulären Ausdrücken
Vim unterstützt reguläre Ausdrücke in Substitutionen, was die Suche und Ersetzung noch mächtiger macht.
Um jede Zahl mit einem Doppelpunkt davor zu ersetzen:
:%s/\([0-9]\)/:\1/g
- [0-9] sucht nach einer Ziffer.
- \(\) speichert seinen Inahlt als eine Gruppe.
- \1 setzt die erste gespeicherte Gruppe ein.
Ersetzen nur beim ersten Vorkommen
Um nur das erste Vorkommen von "eins" in jeder Zeile zu ersetzen:
:%s/eins/zwei/
- Ohne den g-Schalter wird nur das erste Vorkommen in der Zeile ersetzt.
Ersetzen mit einer Bedingung
Um in Zeilen, die das Wort "fuenf" enthalten, "fuenf" durch "5" zu ersetzen:
:/fuenf/s/fuenf/5/g
- /fuenf/ begrenzt die Ersetzung auf Zeilen, die das Wort "fuenf" enthalten.
Löschen von Text
Um "eins" in der gesamten Datei zu löschen (ersetzen durch nichts):
:%s/eins//g
- Die Ersetzung durch nichts entfernt das Wort "eins" aus allen Zeilen.
Rückgängig machen
Alle Ersetzungen können mit u rückgängig gemacht werden, um Fehler zu korrigieren.
Zusammenfassung der wichtigsten Optionen
- %: Ersetzt in der gesamten Datei.
- g: Ersetzt alle Vorkommen in einer Zeile.
- c: Interaktive Bestätigung.
- 1: Ersetzt nur das erste Vorkommen in einer Zeile (standardmäßig ohne g).
- Reguläre Ausdrücke: Mächtige Suchen mit Wildcards (z. B. .*, \d, \b)
Konfigdatei
Allgemein
/etc/vimrc
Individuell
~/.vimrc
Beispiel
syntax on set ruler set tabstop=2
Specials
Cursor springt nach den Start ans Dateiende
vi + <datei>
Cursor springt nach den Start in Zeile 97
vi +97 <datei>
Reguläre Ausdrücke
| c | Ein einzelner Buchstabe passt auf sich selbst |
| . | Ein Punkt passt auf jedes Zeichen außer auf das Zeilenende |
| * | Das dem Operator * vorangehende Muster kann 0 oder öfter vorkommen |
| ^ | (Caret) passt auf den Zeilenanfang |
| $ | Passt auf das Zeilenende |
| \ | Das folgende Sonderzeichen wird entwertet |
| [...] | Passt auf "genau" eins in [...] angebenen Zeichen |
| [^...] | Passt auf "genau" ein Zeichen welches nicht in [...] angebenen ist |
| \< | Passt auf den Wortanfang |
| \> | Passt auf das Wortende |