VI Crash: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| Zeile 1: | Zeile 1: | ||
| − | == | + | == Die 4 Modi == |
| − | |||
| − | |||
| − | + | {| class="wikitable" | |
| − | + | ! Modus !! Aktivieren !! Verlassen | |
| + | |- | ||
| + | | '''Normalmodus''' || Standardmodus beim Öffnen || — | ||
| + | |- | ||
| + | | '''Einfügemodus''' || <code>i</code> vor Cursor, <code>a</code> nach Cursor, <code>o</code> neue Zeile unten, <code>O</code> neue Zeile oben || <code>ESC</code> | ||
| + | |- | ||
| + | | '''Visueller Modus''' || <code>v</code> zeichenweise, <code>V</code> zeilenweise, <code>Ctrl+v</code> Blockauswahl || <code>ESC</code> | ||
| + | |- | ||
| + | | '''Befehlszeilenmodus''' || <code>:</code> Befehl, <code>/</code> Suche vorwärts, <code>?</code> Suche rückwärts || <code>ESC</code> | ||
| + | |} | ||
| − | + | '''Merke:''' Immer mit <code>ESC</code> zurück in den Normalmodus. | |
| − | |||
| + | == Normalmodus == | ||
| − | ==Navigation | + | === Navigation === |
| − | < | + | * <code>gg</code> – Anfang der Datei |
| − | + | * <code>G</code> – Ende der Datei | |
| − | + | * <code>:4</code> – Springe zu Zeile 4 | |
| − | </ | + | * <code>0</code> – Zeilenanfang |
| + | * <code>$</code> – Zeilenende | ||
| + | * <code>w</code> – Nächstes Wort | ||
| + | * <code>b</code> – Vorheriges Wort | ||
| − | == | + | === Löschen === |
| + | * <code>dd</code> – Zeile löschen (in Register) | ||
| + | * <code>3dd</code> – 3 Zeilen löschen | ||
| + | * <code>dG</code> – Bis Dateiende löschen | ||
| + | * <code>d0</code> – Bis Zeilenanfang löschen | ||
| + | * <code>d$</code> – Bis Zeilenende löschen | ||
| + | * <code>x</code> – Zeichen löschen | ||
| + | * <code>3x</code> – 3 Zeichen löschen | ||
| − | + | === Kopieren & Einfügen === | |
| − | * | + | * <code>yy</code> – Zeile kopieren (yank) |
| − | + | * <code>3yy</code> – 3 Zeilen kopieren | |
| − | + | * <code>yG</code> – Bis Dateiende kopieren | |
| − | + | * <code>y0</code> – Bis Zeilenanfang kopieren | |
| − | + | * <code>y$</code> – Bis Zeilenende kopieren | |
| − | + | * <code>p</code> – Einfügen nach Cursor | |
| − | + | * <code>P</code> – Einfügen vor Cursor | |
| − | |||
| − | * | ||
| − | * | ||
| − | * | ||
| − | |||
| − | * | ||
| − | |||
| − | |||
| − | * p | ||
| − | |||
| − | * / | ||
| − | |||
| − | |||
| − | == | + | === Suchen === |
| + | * <code>/muster</code> – Vorwärts suchen | ||
| + | * <code>?muster</code> – Rückwärts suchen | ||
| + | * <code>n</code> – Nächster Treffer | ||
| + | * <code>N</code> – Vorheriger Treffer | ||
| + | * <code>*</code> – Wort unter Cursor suchen | ||
| − | + | === Sonstiges === | |
| − | * | + | * <code>u</code> – Rückgängig (undo) |
| − | + | * <code>Ctrl+r</code> – Wiederholen (redo) | |
| − | * | + | * <code>.</code> – Letzten Befehl wiederholen |
| − | + | * <code>r</code> – Einzelnes Zeichen ersetzen | |
| − | + | * <code>ZZ</code> – Speichern und beenden | |
| − | |||
| − | |||
| − | * | ||
| − | * | ||
| − | |||
| − | * | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | == | + | == Visueller Modus == |
| − | |||
| − | |||
| − | + | '''Tipp:''' Erst Text markieren, dann Befehl ausführen. | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | === Auswahl === | |
| − | < | + | * <code>v</code> – Zeichenweise markieren |
| − | * | + | * <code>V</code> – Zeilenweise markieren |
| − | * | + | * <code>Ctrl+v</code> – Blockauswahl (Spalten) |
| − | * | + | * <code>ggVG</code> – Gesamte Datei markieren |
| − | === | + | === Aktionen auf Auswahl === |
| − | + | * <code>d</code> – Auswahl löschen | |
| − | < | + | * <code>y</code> – Auswahl kopieren |
| − | * | + | * <code>></code> – Einrücken |
| + | * <code><</code> – Ausrücken | ||
| + | * <code>~</code> – Groß-/Kleinschreibung wechseln | ||
| + | * <code>:</code> – Befehl auf Auswahl anwenden | ||
| − | === | + | == Befehlszeilenmodus == |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | == | + | === Datei === |
| − | + | * <code>:w</code> – Speichern | |
| − | + | * <code>:w!</code> – Speichern (Schreibschutz überschreiben) | |
| − | + | * <code>:q</code> – Beenden | |
| − | + | * <code>:q!</code> – Beenden ohne Speichern | |
| − | + | * <code>:wq!</code> – Speichern und beenden | |
| − | + | * <code>:e <datei></code> – Andere Datei öffnen | |
| − | + | * <code>:r <datei></code> – Datei an aktueller Stelle einfügen | |
| − | |||
| − | == | + | === Shell & Einstellungen === |
| − | + | * <code>:sh</code> – Kurz in Shell wechseln (zurück mit <code>exit</code>) | |
| − | + | * <code>:!befehl</code> – Shell-Befehl ausführen | |
| − | + | * <code>:r!befehl</code> – Ausgabe ins Dokument einfügen | |
| − | + | * <code>:set number</code> – Zeilennummern anzeigen | |
| + | * <code>:set ruler</code> – Koordinaten anzeigen | ||
| + | * <code>:syntax on</code> – Syntax-Highlighting | ||
| + | * <code>:set tabstop=2</code> – Tab-Breite setzen | ||
| + | === Suchen & Ersetzen === | ||
| + | * <code>:s/alt/neu/</code> – Erstes Vorkommen in aktueller Zeile | ||
| + | * <code>:s/alt/neu/g</code> – Alle Vorkommen in aktueller Zeile | ||
| + | * <code>:%s/alt/neu/g</code> – Alle Vorkommen in der gesamten Datei | ||
| + | * <code>:%s/alt/neu/gc</code> – Alle ersetzen mit Bestätigung | ||
| + | * <code>:%s/alt//g</code> – Text löschen (durch nichts ersetzen) | ||
| − | == | + | == Reguläre Ausdrücke (Auswahl) == |
| − | {| | + | {| class="wikitable" |
| − | + | ! Zeichen !! Bedeutung | |
| − | |||
|- | |- | ||
| − | |. | + | | <code>.</code> || Beliebiges Zeichen (außer Zeilenende) |
| − | | | ||
|- | |- | ||
| − | |* | + | | <code>*</code> || Vorheriges Muster 0 oder mehrmals |
| − | | | ||
|- | |- | ||
| − | |^ | + | | <code>^</code> || Zeilenanfang |
| − | | | ||
|- | |- | ||
| − | |$ | + | | <code>$</code> || Zeilenende |
| − | | | ||
|- | |- | ||
| − | | | + | | <code>[...]</code> || Genau eines der angegebenen Zeichen |
| − | | | ||
|- | |- | ||
| − | |[...] | + | | <code>[^...]</code> || Kein Zeichen aus der Menge |
| − | | | ||
|- | |- | ||
| − | | | + | | <code>\<</code> || Wortanfang |
| − | | | ||
|- | |- | ||
| − | |\< | + | | <code>\></code> || Wortende |
| − | | | ||
|- | |- | ||
| − | |\> | + | | <code>\</code> || Sonderzeichen entwerten |
| − | | | ||
|} | |} | ||
| + | |||
| + | == Konfiguration == | ||
| + | |||
| + | === Konfigdateien === | ||
| + | ; Systemweit | ||
| + | : <code>/etc/vimrc</code> | ||
| + | ; Individuell (pro Benutzer) | ||
| + | : <code>~/.vimrc</code> | ||
| + | |||
| + | === Beispiel ~/.vimrc === | ||
| + | <pre> | ||
| + | syntax on | ||
| + | set ruler | ||
| + | set number | ||
| + | set tabstop=2 | ||
| + | </pre> | ||
| + | |||
| + | === Datei mit Cursorposition öffnen === | ||
| + | * <code>vi + <datei></code> – Cursor am Dateiende | ||
| + | * <code>vi +97 <datei></code> – Cursor in Zeile 97 | ||
Aktuelle Version vom 19. April 2026, 09:10 Uhr
Die 4 Modi
| Modus | Aktivieren | Verlassen |
|---|---|---|
| Normalmodus | Standardmodus beim Öffnen | — |
| Einfügemodus | i vor Cursor, a nach Cursor, o neue Zeile unten, O neue Zeile oben |
ESC
|
| Visueller Modus | v zeichenweise, V zeilenweise, Ctrl+v Blockauswahl |
ESC
|
| Befehlszeilenmodus | : Befehl, / Suche vorwärts, ? Suche rückwärts |
ESC
|
Merke: Immer mit ESC zurück in den Normalmodus.
Normalmodus
gg– Anfang der DateiG– Ende der Datei:4– Springe zu Zeile 40– Zeilenanfang$– Zeilenendew– Nächstes Wortb– Vorheriges Wort
Löschen
dd– Zeile löschen (in Register)3dd– 3 Zeilen löschendG– Bis Dateiende löschend0– Bis Zeilenanfang löschend$– Bis Zeilenende löschenx– Zeichen löschen3x– 3 Zeichen löschen
Kopieren & Einfügen
yy– Zeile kopieren (yank)3yy– 3 Zeilen kopierenyG– Bis Dateiende kopiereny0– Bis Zeilenanfang kopiereny$– Bis Zeilenende kopierenp– Einfügen nach CursorP– Einfügen vor Cursor
Suchen
/muster– Vorwärts suchen?muster– Rückwärts suchenn– Nächster TrefferN– Vorheriger Treffer*– Wort unter Cursor suchen
Sonstiges
u– Rückgängig (undo)Ctrl+r– Wiederholen (redo).– Letzten Befehl wiederholenr– Einzelnes Zeichen ersetzenZZ– Speichern und beenden
Visueller Modus
Tipp: Erst Text markieren, dann Befehl ausführen.
Auswahl
v– Zeichenweise markierenV– Zeilenweise markierenCtrl+v– Blockauswahl (Spalten)ggVG– Gesamte Datei markieren
Aktionen auf Auswahl
d– Auswahl löscheny– Auswahl kopieren>– Einrücken<– Ausrücken~– Groß-/Kleinschreibung wechseln:– Befehl auf Auswahl anwenden
Befehlszeilenmodus
Datei
:w– Speichern:w!– Speichern (Schreibschutz überschreiben):q– Beenden:q!– Beenden ohne Speichern:wq!– Speichern und beenden:e <datei>– Andere Datei öffnen:r <datei>– Datei an aktueller Stelle einfügen
Shell & Einstellungen
:sh– Kurz in Shell wechseln (zurück mitexit):!befehl– Shell-Befehl ausführen:r!befehl– Ausgabe ins Dokument einfügen:set number– Zeilennummern anzeigen:set ruler– Koordinaten anzeigen:syntax on– Syntax-Highlighting:set tabstop=2– Tab-Breite setzen
Suchen & Ersetzen
:s/alt/neu/– Erstes Vorkommen in aktueller Zeile:s/alt/neu/g– Alle Vorkommen in aktueller Zeile:%s/alt/neu/g– Alle Vorkommen in der gesamten Datei:%s/alt/neu/gc– Alle ersetzen mit Bestätigung:%s/alt//g– Text löschen (durch nichts ersetzen)
Reguläre Ausdrücke (Auswahl)
| Zeichen | Bedeutung |
|---|---|
. |
Beliebiges Zeichen (außer Zeilenende) |
* |
Vorheriges Muster 0 oder mehrmals |
^ |
Zeilenanfang |
$ |
Zeilenende |
[...] |
Genau eines der angegebenen Zeichen |
[^...] |
Kein Zeichen aus der Menge |
\< |
Wortanfang |
\> |
Wortende |
\ |
Sonderzeichen entwerten |
Konfiguration
Konfigdateien
- Systemweit
/etc/vimrc- Individuell (pro Benutzer)
~/.vimrc
Beispiel ~/.vimrc
syntax on set ruler set number set tabstop=2
Datei mit Cursorposition öffnen
vi + <datei>– Cursor am Dateiendevi +97 <datei>– Cursor in Zeile 97