R


Bash Vi


Programmieren


Basiswissen


Vi ist ein häufig genutzter Editor zur Bearbeitung von Texten für Unix und Linux. Hier stehen einige Befehle zur Navigation innerhalb einer Sitzung.

Zwei Modii


Der Editor wird in zwei Bearbeitungsmodi bedient: im Eingabe- oder Schreibmodus können dem bestehenden Text Symbole hinzugefügt werden oder bestehende Symbole können überschrieben werden. Im Befehlsmodus kann man in einer eigenen Kommandozeile außerhalb des Textes programmierähnliche Befehle auf den Text anwenden (z. B. Zeilen nummerieren, ans Textende springen etc.). Mit der Taste ESC wechselt man vom Schreib- in den Befehlsmodus. Nach der Ausführung eines Befehls wechselt Vi automatisch zurück in den Schreibmodus. Befehle, die mit einem Doppelpunkt (:) beginnen, wirken nur im Befehlsmodus.

Speichern & Schliessen


:q bewirkt: vi beenden
:q! bewirkt: vi beenden, nicht gespeicherte Änderungen gehen verloren
:w bewirkt: Datei speichern
:w! bewirkt: Speichern der Datei erzwingen
:wq (oder) ZZ bewirkt: Datei speichern und vi beenden
+ z bewirkt: Shell starten; vi wird in Hintergrund geschoben; Rückkehr durch Eingabe von "fg"

Navigation


:set number
G bewirkt: an das Ende des Dokuments springen
1G bewirkt: in die erste Zeile des Dokuments springen
8G bewirtk: in die achte Zeile des Dokuments springen
0 (null) bewirkt: an den Anfang der Zeile springen
^ bewirkt: an den Anfang der Zeile springen
$ bewirkt: an das Ende der Zeile springen
b bewirkt: an den Anfang des letzten Wortes springen
w bewirkt: an den Anfang des nächsten Wortes springen
e bewirkt: an das Ende des nächsten Wortes springen
h bewirkt: ein Zeichen nach links
j bewirkt: ein Zeile nach unten
k bewirkt: eine Zeile nach oben
l bewirkt: ein Zeichen nach rechts
+ u bewirkt: nach oben blättern
+ d bewirkt: nach unten blättern
L bewirkt: in die letzte Zeile der Bildschirmausgabe springen

Löschen


x bewirkt: Zeichen unter Cursor-Position löschen
r bewirkt: Zeichen unter Cursor-Position ersetzen
s bewirkt: Zeichen unter Cursor-Position ersetzen und in den Bearbeitungsmodus wechseln
dd bewirkt: aktuelle Zeile ausschneiden (in Zwischenablage kopieren & löschen)
[ZAHL]dd bewirkt: die nächsten [ZAHL] Zeilen ausschneiden
C bewirkt: Zeile ab aktueller Cursor-Position löschen
V bewirkt: Zeile markieren
v bewirkt: Zeichen markieren
d bewirkt: markierte Textstellen löschen
cw bewirkt: aktuelles Wort ersetzen
dw bewirkt: aktuelles Wort löschen (incl. angehängtem Leerzeichen)
de bewirkt: aktuelles Wort löschen (über Zeile hinaus)
dl bewirkt: Zeichen unter Cursor-Position löschen
dj bewirkt: zwei Zeilen löschen (Cursor-Position ist 1. Zeile)
dk bewirkt: zwei Zeilen löschen (Cursor-Position ist 2. Zeile)
:5,10d bewirkt: Zeilen 5 bis 10 löschen
:.,$d bewirkt: alle Zeilen löschen ("." = Anfang der Datei, "$" = Ende der Datei)

Einfügen


p bewirkt: Zwischenablage nach aktueller Zeile einfügen
P bewirkt: Zwischenablage vor aktueller Zeile einfügen
R bewirkt: Text ab Cursor-Position überschreiben
J bewirkt: aktuelle Zeile an das Ende der vorhergehenden Zeile anhängen
o bewirkt: eine Zeile nach der aktuellen einfügen und in den Bearbeitungsmodus wechseln
O bewirkt: eine Zeile vor der aktuellen einfügen und in den Bearbeitungsmodus wechseln
a bewirkt: ein Leerzeichen einfügen und in den Bearbeitungsmodus wechseln
A bewirkt: zum Ende der Zeile springen und in den Bearbeitungsmodus wechseln
i bewirkt: in den Bearbeitungsmodus wechseln
I bewirkt: an den Anfang der Zeile springen und in den Bearbeitungsmodus wechseln
r test.txt: Fügt Inhalt der Datei test.txt ein

Suchen & Ersetzen


/Linux bewirkt: nach "Linux" suchen
/ bewirkt: letzte Suche wiederholen
n bewirkt: letzte Suche wiederholen
:s/Suchen_nach/Ersetzen_durch/ bewirkt: in aktueller Zeile suchen & ersetzen
:1,7s/Suchen_nach/Ersetzen_durch/ bewirkt: in Zeile 1 bis 7 suchen & ersetzen
:%s/Suchen_nach/Ersetzen_durch/ bewirkt: in allen Zeilen suchen & ersetzen
:%s/x/r/g bewirkt: alle x werden durch Leerzeile ersetzt

vi als Taschenrechner


Drücke gleichzeitig die Taste "Strg" (CTR) und "r". Damit wechselt vi in einen Modus, in dem man Rechenterme eingeben kann. Man muss den Term mit einem Gleichzeichen "=" beginnen. Dann kann man direkt etwas eingeben wie "2+2". Vim schreibt dann das Ergebnis 4 in die Datei. Kommazahlen werden mit einem Punkt geschrieben.

vi und Sonderzeichen


  • Sonderzeichen können so eingefügt werden:
  • Man muss im Eingabemodus (Insert) sein.
  • Dann Strg-V drücken, Cursor wird dann dann blau.
  • Dann kleines u eingeben, dann vierstellige Unicode-Hex-Zahl.

Sonstiges


  • u bewirkt: UNDO der letzten Befehle
  • U bewirkt: alle Änderungen der aktuellen Zeile rückgängig machen
  • 87,90 w wegmich.txt: exportiert die Zeilen 87 bis 90 (inklusive) in Datei

Siehe auch