VI Crash: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Alexej.harbig (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
 
(6 dazwischenliegende Versionen von einem anderen Benutzer werden nicht angezeigt)
Zeile 1: Zeile 1:
== Der VI besitzt 3 Hauptmodi ==
== Die 4 Modi ==
* '''Normalmodus''' (Normal Mode) 
Navigation und Bearbeitung von Text im Standardmodus.


* '''Einfügemodus''' (Insert Mode)
{| class="wikitable"
Text eingeben und bearbeiten.
! 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 ===
* <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


* '''Befehlszeilenmodus''' (Command-Line Mode) 
=== Suchen ===
Befehle wie Speichern, Beenden und Suchen ausführen.
* <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


==Navigation (Auswahl)==
== Visueller Modus ==
<pre>
Einfügemodus <- i,a,o... <- Normalmodus ->    :,/,?    -> Befehlszeilenmodus
            ->    ESC  ->            <-    ESC    <-
</pre>


== Normalmodus (Auswahl) ==
'''Tipp:''' Erst Text markieren, dann Befehl ausführen.


* d löschen
=== Auswahl ===
** dd eine Zeile löschen und in den Puffer schreiben
* <code>v</code> – Zeichenweise markieren
** 3dd drei Zeilen löschen und in den Puffer schreiben
* <code>V</code> – Zeilenweise markieren
** dG lösche ab der aktuellen Zeile bis zum Ende und in den Puffer schreiben
* <code>Ctrl+v</code> – Blockauswahl (Spalten)
** d3G lösche ab der aktuellen Zeile bis zur Zeile 3 und in den Puffer schreiben
* <code>ggVG</code> – Gesamte Datei markieren
** d0 bis zum Zeilenanfang löschen und in den Puffer schreiben
** d$ bis zum Zeilenende löschen und in den Puffer schreiben
* y yanken
** yy eine Zeile in den Puffer schreiben
** 3yy drei Zeilen in den Puffer schreiben
** yG ab der aktuellen Zeile bis zum Ende und in den Puffer schreiben
** y5G ab der aktuellen Zeile bis zur Zeile 5 und in den Puffer schreiben
** y0 bis zum Zeilenanfang in den Puffer schreiben
** y$ bis zum Zeilenende in den Puffer 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) ==
=== 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


* :w  schreiben der Datei
== Befehlszeilenmodus ==
* :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


==Konfigdatei==
=== Datei ===
Allgemein
* <code>:w</code> – Speichern
/etc/vimrc
* <code>:w!</code> – Speichern (Schreibschutz überschreiben)
Individuell
* <code>:q</code> – Beenden
~/.vimrc
* <code>:q!</code> – Beenden ohne Speichern
Beispiel
* <code>:wq!</code> – Speichern und beenden
syntax on
* <code>:e <datei></code> – Andere Datei öffnen
set ruler
* <code>:r <datei></code> – Datei an aktueller Stelle einfügen
set tabstop=2


==Specials==
=== Shell & Einstellungen ===
Cursor springt nach den Start ans Dateiende
* <code>:sh</code> – Kurz in Shell wechseln (zurück mit <code>exit</code>)
vi + <datei>
* <code>:!befehl</code> – Shell-Befehl ausführen
Cursor springt nach den Start in Zeile 97
* <code>:r!befehl</code> – Ausgabe ins Dokument einfügen
vi +97 <datei>
* <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]]==
== Reguläre Ausdrücke (Auswahl) ==


{| Border=1 Cellpadding=2
{| class="wikitable"
|c
! Zeichen !! Bedeutung
|Ein einzelner Buchstabe passt auf sich selbst
|-
|-
|.
| <code>.</code> || Beliebiges Zeichen (außer Zeilenende)
|Ein Punkt passt auf jedes Zeichen außer auf das Zeilenende
|-
|-
|*
| <code>*</code> || Vorheriges Muster 0 oder mehrmals
|Das dem Operator * vorangehende Muster kann 0 oder öfter vorkommen
|-
|-
|^
| <code>^</code> || Zeilenanfang
|(Caret) passt auf den Zeilenanfang
|-
|-
|$
| <code>$</code> || Zeilenende
|Passt auf das Zeilenende
|-
|-
|\
| <code>[...]</code> || Genau eines der angegebenen Zeichen
|Das folgende Sonderzeichen wird entwertet
|-
|-
|[...]
| <code>[^...]</code> || Kein Zeichen aus der Menge
|Passt auf "genau" eins in [...] angebenen Zeichen
|-
|-
|[^...]
| <code>\<</code> || Wortanfang
|Passt auf "genau" ein Zeichen welches nicht in [...] angebenen ist
|-
|-
|\<
| <code>\></code> || Wortende
|Passt auf den Wortanfang
|-
|-
|\>
| <code>\</code> || Sonderzeichen entwerten
|Passt auf das Wortende
|}
|}
== 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

Navigation

  • gg – Anfang der Datei
  • G – Ende der Datei
  • :4 – Springe zu Zeile 4
  • 0 – Zeilenanfang
  • $ – Zeilenende
  • w – Nächstes Wort
  • b – Vorheriges Wort

Löschen

  • dd – Zeile löschen (in Register)
  • 3dd – 3 Zeilen löschen
  • dG – Bis Dateiende löschen
  • d0 – Bis Zeilenanfang löschen
  • d$ – Bis Zeilenende löschen
  • x – Zeichen löschen
  • 3x – 3 Zeichen löschen

Kopieren & Einfügen

  • yy – Zeile kopieren (yank)
  • 3yy – 3 Zeilen kopieren
  • yG – Bis Dateiende kopieren
  • y0 – Bis Zeilenanfang kopieren
  • y$ – Bis Zeilenende kopieren
  • p – Einfügen nach Cursor
  • P – Einfügen vor Cursor

Suchen

  • /muster – Vorwärts suchen
  • ?muster – Rückwärts suchen
  • n – Nächster Treffer
  • N – Vorheriger Treffer
  • * – Wort unter Cursor suchen

Sonstiges

  • u – Rückgängig (undo)
  • Ctrl+r – Wiederholen (redo)
  • . – Letzten Befehl wiederholen
  • r – Einzelnes Zeichen ersetzen
  • ZZ – Speichern und beenden

Visueller Modus

Tipp: Erst Text markieren, dann Befehl ausführen.

Auswahl

  • v – Zeichenweise markieren
  • V – Zeilenweise markieren
  • Ctrl+v – Blockauswahl (Spalten)
  • ggVG – Gesamte Datei markieren

Aktionen auf Auswahl

  • d – Auswahl löschen
  • y – 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 mit exit)
  • :!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 Dateiende
  • vi +97 <datei> – Cursor in Zeile 97