VI Crash: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: =Der VI besitzt 3 Modi= *Kommando *Eingabe *Zeilen ==Navigation (Auswahl)== Kommando -> i -> Eingabe Kommando <- ESC <- Eingabe Kommando -> : -> Zeilen Kommando ...)
 
 
(16 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
=Der VI besitzt 3 Modi=
+
== Der VI besitzt 3 Hauptmodi ==
*Kommando
+
* '''Normalmodus''' (Normal Mode) 
*Eingabe
+
Navigation und Bearbeitung von Text im Standardmodus.
*Zeilen
+
 
 +
* '''Einfügemodus''' (Insert Mode) 
 +
Text eingeben und bearbeiten.
 +
 
 +
* '''Befehlszeilenmodus''' (Command-Line Mode) 
 +
Befehle wie Speichern, Beenden und Suchen ausführen.
 +
 
  
 
==Navigation (Auswahl)==
 
==Navigation (Auswahl)==
Kommando  -> i -> Eingabe
+
<pre>
 +
Einfügemodus <- i,a,o... <- Normalmodus ->  :,/,?  -> Befehlszeilenmodus
 +
            ->    ESC  ->             <-    ESC  <-
 +
</pre>
  
Kommando  <- ESC <- Eingabe
+
== Normalmodus (Auswahl) ==
  
Kommando  -> : -> Zeilen
+
* 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
  
Kommando  <- ESC <- Zeilen (keine Aktion)
+
== Befehlszeilenmodus (Auswahl) ==
  
Kommando <- :kommando enter <- Zeilen (eine Aktion)
+
* :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
  
Bash  <- :q! <- Zeilen (eine Aktion)
+
==Substitutionsbefehle==
 +
=== Grundsyntax ===
 +
Die grundlegende Syntax eines Substitutionsbefehls lautet:
  
Bash  <- :wq! <- Zeilen (eine Aktion)
+
<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.
  
==Kommandomodus (Auswahl)==
+
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.
  
# d löschen
+
=== Ersetzen nur beim ersten Vorkommen ===
## dd eine Zeile löschen und in den Puffer schreiben
+
Um nur das erste Vorkommen von "eins" in jeder Zeile zu ersetzen:
## 3dd drei Zeilen löschen und in den Puffer schreiben
+
<pre> :%s/eins/zwei/ </pre>
## dG lösche ab der aktuellen Zeile bis zum Ende und in den Puffer schreiben
+
*Ohne den g-Schalter wird nur das erste Vorkommen in der Zeile ersetzt.
## d3G lösche ab der aktuellen Zeile bis zur Zeile 3 und in den Puffer schreiben
 
## 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
 
##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 Zeil 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
 
#/<Suchaudruck> suchen
 
##n weitersuchen
 
##N andere Richtung weitersuchen
 
  
==Zeilenmodus (Auswahl)==
+
=== Ersetzen mit einer Bedingung ===
# :w  schreiben der Datei
+
Um in Zeilen, die das Wort "fuenf" enthalten, "fuenf" durch "5" zu ersetzen:
# :w! schreiben der Datei übergehe Schreibschutz
+
<pre> :/fuenf/s/fuenf/5/g </pre>
# :q  beenden
+
*/fuenf/ begrenzt die Ersetzung auf Zeilen, die das Wort "fuenf" enthalten.
# :q! forciert beenden 
+
=== Löschen von Text ===
# :wq! speichern und forciert beenden
+
Um "eins" in der gesamten Datei zu löschen (ersetzen durch nichts):
# :e <datei> andere Datei öffnen
+
<pre> :%s/eins//g </pre>
# :e #  zu vorgehenden Datei zurückspringen
+
*Die Ersetzung durch nichts entfernt das Wort "eins" aus allen Zeilen.
# :r<datei> datei an die aktuelle Stelle angefügt
+
=== Rückgängig machen ===
# :sh kurzes verlassen - mit exit wieder in den vi
+
Alle Ersetzungen können mit u rückgängig gemacht werden, um Fehler zu korrigieren.
# :!<befehl> befehl wird ausgeführt
+
=== Zusammenfassung der wichtigsten Optionen ===
# :r!<befehl> befehl wird ausgeführt und an die aktuelle Stelle geschrieben
+
*%: Ersetzt in der gesamten Datei.
# :4 Cursor springt an vierte Zeile
+
*g: Ersetzt alle Vorkommen in einer Zeile.
# :$ Cursor springt an letzte Zeile
+
*c: Interaktive Bestätigung.
# :%s/muster/ersetzung/g
+
*Reguläre Ausdrücke: Mächtige Suchen mit Wildcards (z. B. .*, \d, \b)
#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==
 
==Konfigdatei==
 
Allgemein
 
Allgemein
 
  /etc/vimrc
 
  /etc/vimrc
Induviduell
+
Individuell
 
  ~/.vimrc
 
  ~/.vimrc
 
Beispiel  
 
Beispiel  
Zeile 81: Zeile 134:
  
  
==Reguläre Ausdrücke==
+
==[[Reguläre Ausdrücke]]==
  
 
{| Border=1 Cellpadding=2
 
{| Border=1 Cellpadding=2

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