vi / vim
Vi oder Vim ist ein einfacher Leistungsstarker Texteditor für die Linux/Unix Kommandzeile.
Bei Debian Systemen ist Standardmäßig nur eine leichtgewichtige Version von Vim installiert. Will man Vim mit mehr Eigenschaften, wie mehrfaches Rückgängigmachen, Syntaxhervorhebung, Kommandozeilenhistorie, Online-Hilfe u.s.w, sowie Unterstützung für das
Skripten mit Perl, Python, Ruby und Tcl, kann das Paket „vim-nox“ (Debian, Ubuntu) installiert werden.
start
Durch das Ausfühhren von „vi“ oder „vim“ können eine oder mehr Dateien in den „vi“ geladen werden. Zwischen den Dokumenten wechseln funktioniert mit :next (Vorwärts) oder :Next (Rückwärts). Ist eine zu öffnende Datei nicht vorhanden wird sie erstellt.
Syntax:
- vi [opt] [datei] [datei2]
Optionen:
- +[zahl] ⇒ Öffnet Datei bei Zeile zahl.
- -b ⇒ Startet Vi im Binärmodus.
- -d ⇒ Startet Vi im diff Modus.
vi modi
Kommandomodus
Wenn „vi“ gestartet wurde, befindet er sich im Kommandomodus. Hier kann man den Text nicht direkt bearbeiten, jedoch …
- im Text bewegen.
- Zwischenablagerungsoptionen durchführen.
- löschungen vornehmen.
- Datei durchsuchen.
- Datei speichern und schließen.
In den Kommandomodus kann man mit der [Esc] Taste umschalten.
Einfügemodus
Im Einfügemodus kann man Text mit dem „vi“ Editor bearbeiten. In den Einfügemodus gelangt man mit der [Einfügen] Taste, oder…
- i ⇒ Wechselt von der aktuellen Cursorposition in den Einfügemodus.
- I ⇒ Wechselt am Anfang der aktuellen Zeile in den Einfügemodus.
- a ⇒ Wechselt hinter der aktuellen Cursorposition in den Einfügemodus.
- A ⇒ Wechselt am Ende der aktuellen Zeile in den Einfügemodus.
- :r [datei] ⇒ Liest neue Datei hinter aktueller Datei ein.
- :e [datei] ⇒ Neue Datei einlesen.
- :e! [datei] ⇒ Neue Datei öffnen alte schließen erzwingen.
Um wieder in den Kommandomodus zu gelangen, die [Esc] Taste drücken.
Ersetzenmodus
In den Ersetzenmodus gelangt man, in dem die [Einfügen] Taste zweimal gedrückt wird, oder…
- R ⇒ wechselt von der aktuellen Cursorposition in den Ersetzenmodus.
Um wieder in den Kommandomodus zu gelangen, [Esc] drücken.
Visuellermodus
Dieser Modus dient zum Markieren, Kopieren und ausschneiden von Text.
- v ⇒ Wechselt vom Kommando in den Visuellen Modus.
Um wieder in den Kommandomodus zu gelangen, [Esc] drücken.
Datei öffnen
- :e [dateiname] ⇒ Öffnet Datei dateiname(oder neu), aktuelle Datei wird geschlossen.
- :next ⇒ Zur nächsten geöffneten Datei.
- :Next ⇒ Zur letzten geöffneten Datei.
Speichern und beenden
Dazu muß sich der „vi“ im Kommandomodus befinden.
- :w [dateiname] ⇒ Speichert die Datei als dateiname (ist die Datei vorhanden, ist die Angabe des Dateinamens Optional).
- :w! ⇒ Speichern erzwingen.
- :x! ⇒ Speichern erzwingen und vi beenden.
- :wq ⇒ Datei speichern und vi beenden.
- :x ⇒ Speichert Datei und beendet vi.
- ZZ ⇒ Speichert die aktuelle Datei und beendet vi.
- :q ⇒ Beendet vi.
- :q! ⇒ Beendet den Editor auch, wenn Datei nicht gespeichert ist (Änderungen gehen verloren).
Mit "vi" im Text navigiern
Im Kommandomodus kann man wie folgt navigieren.
- h ⇒ Bewegt den Cursor um ein Zeichen nach links.
- l ⇒ Bewegt den Cursor um ein Zeichen nach rechts.
- k ⇒ Bewegt den Cursor um eine Zeile nach oben.
- j ⇒ Bewegt den Cursor um eine Zeile nach unten.
- G ⇒ Bewegt den Cursor zum Ende der Datei.
- H ⇒ Bewegt den Cursor zum Anfang des Dokuments.
- L ⇒ Bewegt den Cursor zum unteren Bildschirmrand.
- b ⇒ Bewegt den Cursor um ein Wort nach links.
- w ⇒ Bewegt den Cursor um ein Wort nach rechts.
- ge ⇒ Bewegt den Cursor zum Wortende links.
- e ⇒ Bewegt den Cursor zum Wortende rechts.
- $ ⇒ Bewegt den Cursor zum Zeilenende.
[x] steht optional für eine Zahl.
- [x]j ⇒ X Zeilen nach unten.
- [x]k ⇒ X Zeilen nach oben.
- [x]cursor-re ⇒ X Zeichen nach rechts.
- [x]cursor-li ⇒ X Zeichen nach links.
- [x]cursor-hoch ⇒ X Zeilen hoch.
- [x]cursor-runter ⇒ X Zeilen runter.
- [x]+ ⇒ X Zeilen nach unten.
- [x]- ⇒ X Zeilen nach oben.
- [x]w ⇒ X Worte nach re.
- [x]b ⇒ X Worte nach li.
- [x]e ⇒ Ende des x Wortes.
- Pos1 ⇒ Zeilenanfang.
- Ende ⇒ Zeilenende.
- gg ⇒ Textanfang.
- G ⇒ Textende.
- [x]gg ⇒ X Zeile im Text.
Einfügen, Löschen, Kopieren, Finden
Im Kommandomodus stehen folgende Möglichkeiten zur Textbearbeitung zur Verfügung:
- ~ ⇒ Groß und Kleinschreibung ändern.
- << ⇒ Zeile nach links verschieben.
- >> ⇒ Zeile nach rechts verschieben.
- yy ⇒ Kopiert Inhalt der aktuellen Zeile in die Zwischenablage.
- p ⇒ Fügt Inhalt der Zwischenablage unter die Zeile, in der sich der Cursor befindet.
- P ⇒ Fügt Inhalt der Zwischenablage ober die Zeile, in der sich der Cursor befindet.
- J ⇒ Zwei Zeilen Zusammenfassen.
- [x]x, Entf ⇒ X Zeichen löschen.
- [x]X ⇒ Zeichen rückwärts löschen.
- [x]D ⇒ Zeichen von cursor bis x Zeile löschen.
- [x]dd ⇒ X ganze Zeilen löschen.
- dd ⇒ Löscht die Zeile, in der sich der Cursor befindet.
- D ⇒ Löscht den Text hinter dem Cursor bis zum Zeilenende.
- cc ⇒ Schneidet komlette Zeile aus, kopiert sie in die Zwischenablage und wechselt automatisch in den Einfügemodus.
- C ⇒ Schneidet Text hinter dem Cursor aus, kopiert sie in die Zwischenablage und wechselt automatisch in den Einfügemodus.
- o ⇒ Fügt neue Zeile unterhalb der Cursorposition ein und wechselt automatisch in den Einfügemodus.
- O ⇒ Fügt neue Zeile oberhalb der Cursorposition ein und wechselt automatisch in den Einfügemodus.
- [Strg + K] ⇒ Leitet einen Digraphen ein.
- [CRTL + N] ⇒ Leitet im Einfügemodus die Stichwortergänzung wortweise ein.
- [Strg + X] | [Strg + L] ⇒ Leitet im Einfügemodus die Stichwortergänzung zeilenweise ein.
- [Strg + N] | [Strg + P] ⇒ Blättern.
Puffer anlegen / einfügen
Puffer können von „0-9“ und „a-z“ anlegt werden.
- a dd ⇒ Löscht aktuelle Zeile und legt sie in Puffer a.
- b dd ⇒ Lösche aktuelle Zeile und legt sie in Puffer b.
- a yy ⇒ Kopiert aktuelle Zeile in den Puffer a.
- a20 yy ⇒ Kopiert die nächsten 20 Zeilen in den Puffer a.
- a p ⇒ Puffer a einfügen.
- b p ⇒ Puffer b einfügen.
- A yy ⇒ Fügt aktuelle Zeile zu Puffer a hinzu.
Textstellen marken
- by'a ⇒ Kopiert den Inhalt von Marke a bis aktueller Cursor Position in Puffer b.
- :marks ⇒ Zeigt alle Marken an.
- :'a ⇒ Gehe zu Marke a.
Im visuellen Modus [v], oder [V] wird Zeilenweise markiert, mit [^v] erfolgt eine Blockweise Markierung. Um den visuellen Modus zu verlassen, verwendet man die Aktivierungstasten ein oder mehrmals. Alternativ geht das auch mit den Tasten [^+c] oder 3x[Esc] hintereinander.
Mit den Cursor Tasten bzw. [Pos1] und [Ende] wird der Cursor am Anfang bzw. am Ende der Zeile gesetzt. Den Curor Wortweise vorwärs setzen, funktioniert mit [e] bzw. [b] für Wortweise rückwärs. Mit [x] oder [d] lassen sich Textbereiche ausschneiden. Das drücken von [y] kopiert die Zeile oder den markierten Text in die Zwischenablage, dabei wechselt „vi“ in den normalen Modus. Jetzt kann man mit [p] den Inhalt der Zwischenablage rechts vom Cursor, bzw. mit [P] links vom Cursor einfügen.
- v ⇒ Visueller Modus Zeichenweise.
- V ⇒ Visueller Modus Zeilenweise.
- ^v ⇒ Visueller Modus Blockweise.
- vv ⇒ Visuellen Modus verlassen.
- ^c ⇒ Visuellen Modus verlassen.
- 3x[Esc] ⇒ Visuellen Modus verlassen.
- [Cursor], [Pos1], [Ende] ⇒ Text markieren.
- e ⇒ Text wortweise vorwärts markieren.
- b ⇒ Text wortweise rückwärts markieren.
- x, d ⇒ Text ausschneiden.
- y ⇒ Text kopieren.
- p ⇒ Text links vom Cursor einfügen.
- P ⇒ Text rechts vom Cursor einfügen.
Suchen und Ersetzen
- /[suchwort] ⇒ Sucht nach der Zeichenkette suchwort.
- / ⇒ Sucht nach dem nächsten Vorkommen der Zeichenkette suchwort.
- ? ⇒ Sucht rückwärts nach dem letzten Vorkommen der Zeichenkette suchwort.
- n ⇒ Weitersuchen rechts.
- N ⇒ Weitersuchen links.
- [x]f[a-zA-Z] ⇒ Springe zum x-ten Vorkommen von [a-zA-Z].
- xp ⇒ Tausche Zeichen gegen das nächste.
- # ⇒ Suche nach String unter cursor vorwärts.
- * ⇒ Suche nach String unter cursor rückwärts.
Ex - Befehle
Ex - Befehle werden im Kommando Modus mit [:] eingeleitet und mit [Enter] ausgeführt.
- :'a ⇒ Gehe zu Marke a.
- :. ⇒ Aktuelle Zeile.
- :2 ⇒ Gehe zu Zeile 2.
- :5,10 ⇒ Von Zeile 5 - 10.
- :1,$ ⇒ Erste bis letzte Zeile (Datei).
- :.,$ ⇒ Von der aktuellen bis zur letzten.
- :% ⇒ Ganze Datei.
- :.,+6 ⇒ Aktuelle Zeile und die nächsten 6 Zeilen.
- :'a,'f ⇒ Von Marke a bis f.
- :'b,'by ⇒ Inhalt der Marke b in unbekannten Zahlenpuffer kopieren.
- :'a,'by a ⇒ Inhalt der Marke a - b in Puffer a kopieren.
- :'a,'bd ⇒ Inhalt der Marke a bis b löschen.
- :'a,'bmn ⇒ Inhalt der Marke a bis b in die Position n kopieren.
- :'a,'bm$ ⇒ Inhalt der Marke a bis b an das Ende der Datei kopieren.
- :16,29d ⇒ Zeilen n bis m löschen.
- :n,mm10 ⇒ Zeilen n bis m zur Zeile 10 verschieben.
- :16,29co$ ⇒ Zeilen n bis m an das Ende der Datei kopieren.
Suchen und Ersetzen
- :/muster ⇒ Sucht nach muster ab akt. Position.
- :?muster ⇒ Sucht rückwärts ab akt. Position.
- :?muster/y p ⇒ Sucht nach muster vor akt. Position und speichert die Zeile in Puffer p.
- :/muster/d ⇒ Sucht nach muster und löscht entspr. Zeile.
- :/muster/d a ⇒ Sucht nach muster, löscht entspr. Zeile und übergibt Zeile Puffer a.
- :/muster/+d ⇒ Sucht nach muster und lösche die Zeile darunter.
- :/muster1/,muster2/d ⇒ Löscht die Zeilen zwischen muster1 und muster2.
- :/muster1/,muster2/+5d ⇒ Löscht Zeilen zwischen muster1 und muster2 und die fünf nächsten.
- :.,muster/m66 ⇒ Verschiebe die Zeilen von der aktuellen Position bis zum muster in Zeile 66.
Globale Suche in einer Datei
- :g/muster ⇒ Zeigt alle Zeilen mit muster.
- :g/muster/nu ⇒ Zeigt alle Zeilen mit muster, mit Zeilennummerierung.
- :g!/muster/ ⇒ Zeigt alle Zeilen, die nicht mit muster übereinstimmen.
- :5,15g/muster/ ⇒ Zeigt alle Zeilen mit muster in den Zeilen 5 bis 15.
- :g/muster/d ⇒ Sucht alle Zeilen mit muster und löscht diese.
- :g/muster/co$ ⇒ Sucht alle Zeilen mit muster und kopiert sie ans Ende der Datei.
- :g/muster/m16 ⇒ Sucht alle Zeilen mit muster und verschiebt sie nach Zeile 16.
- :g/muster/y X ⇒ Sucht alle Zeilen mit muster und kopiert sie in den Puffer x.
Ersetzen
- :s/alt/neu ⇒ Sucht und ersetzt alt durch neu (erstes auftreten in akt. Zeile)
- :s/alt/neu/g ⇒ Sucht und ersetzt alle alt durch neu in aktueller Zeile
- :1,5s/[suchen]/[ersetzen]/g ⇒ Von erster bis fünfter Zeile.
- :1,$s/alt/neu ⇒ Ersetzen im gesamten Dokument.
- :r [datei] ⇒ Inhalt von Datei in aktuelle Datei schreiben.
- :1,20w [neue datei] ⇒ Inhalt der aktuellen Datei in neue Datei schreiben.
- :30,$w >> [neue datei] ⇒ Inhalt der aktuellen Datei in neue Datei anhängen.
- :v/123/ ⇒ Sucht Zeilen in denen 123 nicht enthalten ist.
- :s/alt/neu/gi ⇒ Wie oben aber ohne Groß- und Kleinschreibung.
- :s/alt/neu/gc ⇒ Ersetzt jedes Vorkommen von alt durch neu mit Bestätigung.
- :1,6s/alt/neu/ ⇒ Ersetzt erstes Vorkommen von alt durch neu von Zeile 1 bis 6.
- :%s/alt/neu/ ⇒ Ersetzt erstes Vorkommen von alt durch neu in der Datei.
- :g/muster/s/alt/neu/g ⇒ Sucht Zeilen mit muster und ersetze jedes Vorkommen von alt durch neu.
Rückgängig Wiederherstellen
- u ⇒ Letzten Befehl wiederholen.
- [x]u ⇒ [x] Befehle rückgängig machen.
- ^r ⇒ Rückgängig gemachten Befehl wiederherstellen.
- [x]^R ⇒ [x] rückgängig gemachte Befehle wiederherstellen.
- . ⇒ Befehl wiederholen.
- [x]. ⇒ Letzten Befehl [x] wiederholen.
Metazeichen
- ^ ⇒ Zeilenanfang.
- $ ⇒ Zeilenende.
- . ⇒ Beliebiges Zeichen einmal.
- * ⇒ Beliebiges Zeichen, ein bis unendlich viele.
- \< ⇒ Wortanfang.
- \> ⇒ Wortende.
- [d1-d3] ⇒ Ein Zeichen im Bereich d1 bis d3.
- [^d-y] ⇒ Ein Zeichen nicht im Bereich von d bis y.
- \r ⇒ Return.
- \t ⇒ Tab.
- \s ⇒ Leerzeichen.
- \S ⇒ Nichtleerzeichen.
- \= ⇒ Kein oder ein Treffer.
- \+ ⇒ Ein bis unendlich.
- \| ⇒ Oder.
- \( \) ⇒ Speichert muster in einem Puffer, der über \n aufgerufen werden kann.
- \& \n ⇒ Das muster selbst, der im Puffer \( \) gespeicherten muster.
Reguläre Ausdrücke
- ^[Pp]eter ⇒ Paßt auf Peter u. peter.
- :s/\([^,]\+\), \(.*\)/\2 \1/ ⇒ Macht aus nachname, vorname vorname nachname.
- :s/\>„/\«/g ⇒ Macht aus …
<p>Der "Apfel" fällt "nicht "weit" vom Stamm".</p>
<p>Der »Apfel« fällt »nicht »weit« vom Stamm«.</p>
- :s/«\([^&]\+\)\(«\)/‹\1\2/ ⇒ Wandelt um in …
<p>Der »Apfel« fällt »nicht ›weit‹ vom Stamm«.</p>
Maps
- map! ä ä
- map! ö ö
- map! ü ü
- map! ß ß
- map! Ä Ä
- map! Ö Ö
- map! Ü Ü
- map! ,c <>[Esc]10hi
- map! ,ah <a href=“„ title=“„></a>[Esc]14hi
- map! ,sp [Esc]6hi
Befehlsoptionen
Vi öffnen und Cursor an Zeile 66 positionieren.
vi datei1 +66
Vi öffnen und Cursor bei „suchwort“ positionieren.
vi datei1 +/suchwort
- vi [datei1] [datei2] … ⇒ Vi öffnet mehrere Dateien.
- vi -R [datei] ⇒ Read only Modus (kann nur unter neuem Namen oder mit ! gespeichert werden).
- :![script] ⇒ Führt das Script aus, der Editor bleibt geöffnet.
- 16dd ⇒ Löscht die aktuelle und 15 folgenden Zeilen.
- 42yy ⇒ Kopiert 42 Zeilen in die Zwischenablage.
- 13cc ⇒ Schneidet die aktuelle und zwölf folgenden Zeilen aus.
Vi Optionen
Mit Fenster arbeiten
- [Strg+w+s] ⇒ Waagerechte Teilung.
- [Strg+w+v] ⇒ Senkrechte Teilung.
- [Strg+w+q] ⇒ Aktueles Fenster schließen.
- [Strg+w+h] ⇒ Nach links.
- [Strg+w+j] ⇒ Nach unten.
- [Strg+w+k] ⇒ Nach oben.
- [Strg+w+l] ⇒ Nach rechts.
- [Strg+w+w] ⇒ Nächstes Fenster.
Mit Tabs arbeiten
- :tab [pfad/dateiname] ⇒ Datei in neuen tab öffnen.
- [g+t] ⇒ Nach Tab rechts bewegen.
- :q ⇒ Aktuellen Tab schließen.
Konfigurationseinstellungen
Benutzerdefinierte „vi“ Einstellungen werden in den Dateien “~.vimrc„ (auf Nutzerebene) oder global in “/etc/vimrc„.
- :set ⇒ Zeigt vi einstellungen in vimrc.
- :set[option] ⇒ Option wird gesetzt.
- :set no[option] ⇒ Option wird abgeschaltet.
- :se[option] ⇒ Abfrage des Wertes von Option.
- :se all ⇒ Werte aller Optionen anzeigen.
- :syntax on|off ⇒ Syntaxhighlight aktivieren|deaktivieren.
Optionen:
- ap ⇒ Änderungen werden am Screen angezeigt (default).
- aw ⇒ Beim Beenden wird automatisch der Puffer zurückgeschrieben.
- bf ⇒ Entfernung aller Steuerzeichen.
- ht ⇒ Tabulator schrittweite.
- ic ⇒ Ignorecase (keine Gross u. Keinschreibung wird unterschieden).
- nu ⇒ Zeilennummerierung einschalten.
- scroll ⇒ Scrollbereich bestimmen.
- sh ⇒ Bestimmt die Shell, deren Kommandos innerhalb des Editors aufgerufen werden können.
- ts ⇒ Setzt die länge des Tabulators (z.B. :set ts=4).
- wa ⇒ Rüchschreiben des Puffers in Orginaldatei.
Beispiel einer vimrc:
set number set autoindent syntax on set ts=4
Weitere Vi Dokumente
- Vim Befehle Kurzübersicht (by Laurent Gr ́goire).
- gVim Kurzanleitung (von Dr.-Ing. Fritz Mehner).
- Vim Einführung (tu-chemnitz).
- Vim Einführung (FH Schmalkalden).
- Vimbook Tutorial.
Cloud