VI Crash: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(5 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 12: Zeile 12:
 
==Navigation (Auswahl)==
 
==Navigation (Auswahl)==
 
<pre>
 
<pre>
Einfügemodus <- i,a,o... <- Normalmodus ->   :,/,?   -> Befehlszeilenmodus
+
Einfügemodus <- i,a,o... <- Normalmodus ->   :,/,?   -> Befehlszeilenmodus
             ->    ESC  ->            <-    ESC     <-
+
             ->    ESC  ->            <-    ESC   <-
 
</pre>
 
</pre>
  
Zeile 19: Zeile 19:
  
 
* d löschen
 
* d löschen
** dd eine Zeile löschen und in den Puffer schreiben
+
** dd eine Zeile löschen und in ein Register schreiben
** 3dd drei Zeilen löschen und in den Puffer schreiben
+
** 3dd drei Zeilen löschen und in ein Register schreiben
** dG lösche ab der aktuellen Zeile bis zum Ende und in den Puffer 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 den Puffer 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 den Puffer schreiben
+
** d0 bis zum Zeilenanfang löschen und in ein Register schreiben
** d$ bis zum Zeilenende löschen und in den Puffer schreiben
+
** d$ bis zum Zeilenende löschen und in ein Register schreiben
 
* y yanken
 
* y yanken
** yy eine Zeile in den Puffer schreiben
+
** yy eine Zeile in ein Register schreiben
** 3yy drei Zeilen in den Puffer schreiben
+
** 3yy drei Zeilen in ein Register schreiben
** yG ab der aktuellen Zeile bis zum Ende und in den Puffer 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 den Puffer schreiben
+
** y5G ab der aktuellen Zeile bis zur Zeile 5 und in ein Register schreiben
** y0 bis zum Zeilenanfang in den Puffer schreiben
+
** y0 bis zum Zeilenanfang in ein Register schreiben
** y$ bis zum Zeilenende in den Puffer schreiben
+
** y$ bis zum Zeilenende in ein Register schreiben
 
* x Zeichen löschen
 
* x Zeichen löschen
 
** 3x drei Zeichen löschen
 
** 3x drei Zeichen löschen
Zeile 61: Zeile 61:
 
** :set tabstop=2 beim tab wird 2 Zeichen nach vorn gerücket
 
** :set tabstop=2 beim tab wird 2 Zeichen nach vorn gerücket
 
** :syntax on Farben werden eingeschaltet
 
** :syntax on Farben werden eingeschaltet
 +
 +
==Substitutionsbefehle==
 +
=== Grundsyntax ===
 +
Die grundlegende Syntax eines Substitutionsbefehls lautet:
 +
 +
<pre> :s/Pattern/Ersetzung/ </pre>
 +
*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:
 +
<pre> :s/eins/zwei/ </pre>
 +
*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:
 +
<pre> :s/eins/zwei/g </pre>
 +
*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:
 +
<pre> :%s/eins/zwei/g </pre>
 +
*% 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:
 +
<pre> :%s/eins/zwei/gc </pre>
 +
*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:
 +
<pre> :%s/\([0-9]\)/:\1/g </pre>
 +
*[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:
 +
<pre> :%s/eins/zwei/ </pre>
 +
*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:
 +
<pre> :/fuenf/s/fuenf/5/g </pre>
 +
*/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):
 +
<pre> :%s/eins//g </pre>
 +
*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.
 +
*Reguläre Ausdrücke: Mächtige Suchen mit Wildcards (z. B. .*, \d, \b)
  
 
==Konfigdatei==
 
==Konfigdatei==

Aktuelle Version vom 27. November 2024, 11:07 Uhr

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.


Navigation (Auswahl)

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.
  • 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