Dies ist eine alte Version des Dokuments!
| Befehl | Funktion |
| i | Einfügemodus |
| <ESC> | Befehlsmodus |
| :w | speichern |
| :q! | beenden ohne speichern |
| :wq | speichern und beenden |
| :x | speichern und beenden |
| u | Rückgängig |
| Strg+r | undo Wiederherstellen |
In älteren Vim-Versionen nützlich:
| J | hängt die nächste Zeile an das Ende der aktuellen Zeile an (join) |
| w | ein Wort weiter (word) |
| b | ein Wort zurück (back) |
| gg | Dateianfang (go) |
| 10gg | Zeile 10 |
| G | Dateiende (go) |
| / | Vorwärts suchen |
| ? | Rückwärts suchen |
| n | Zum nächsten Treffer in gleicher Richtung springen |
| N | Zum nächsten Treffer in entgegengesetzter Richtung springen |
| dw | Wort löschen (delete word) |
| dd | Zeile löschen |
| dj | Zeile und nächste Zeile löschen |
| dk | Zeile und vorherige Zeile löschen |
| D | bis zum Ende der Zeile löschen |
| cw | Wort ändern (change word) |
| cc | Zeile ändern |
| C | bis zum Ende der Zeile ändern |
| yy | Zeile kopieren |
| dd | Zeile ausschneiden |
| p | nach aktueller Position einfügen |
| P | vor aktueller Position einfügen |
| vwy | Wort kopieren |
| yw | Wort kopieren |
| / | suchen |
.. Suchwort eingeben ..
| v | visueller modus - zeichenweise |
| [Shift] v | visueller modus - zeilenweise |
| [Strg] v | visueller modus - spaltenweise |
.. Suchwort markieren ..
| c | markierten text ändern |
| I | einfügen |
| d | löschen |
| y | kopieren |
.. Ersatzwort eingeben
| <ESC> | Änderung beenden |
| n | nächster Treffer |
| . | letzen Befehl wiederholen |
| Befehl | Funktion |
| ZZ | speichern & verlassen |
| :x | speichern & verlassen |
| Befehl | Funktion |
:g/^$/d | Alle Leerzeilen löschen |
:%s/suchwort/ersatz/gc | suchen und ersetzen, mit Bestätigung |
vi -o file1 file2 | horizontaler Split (Fenster wechseln mit Ctrl+W Cursortaste) |
vi -O file1 file2 | vertikaler Split (Dateien nebeneinander) |
vi -p file1 file2 | Tab-Modus (Dateitabs wechseln mit g t (goto) - T für rückwärts |
:set fdm=expr :set fde=getline(v:lnum)=~'^\\s*#'?1:getline(prevnonblank(v:lnum))=~'^\\s*#'?1:getline(nextnonblank(v:lnum))=~'^\\s*#'?1:0
| { | zum nächsten Absatz |
| } | zum vorherigen Absatz |
Vim öffnen:
vim <Datei> - öffnet eine leere Datei mit dem Namen welche ich beim Öffnen angegeben habe vim + <Zeilennummer> + <Datei> - öffnet eine leere Datei mit dem Namen welchen ich angegeben habe und springt in die angegebene Zeile vim . - Ich kann mit die Datei aussuchen welche ich öffnen will. Durch den Punkt werden die Dateien aus dem aktuellen Verzeichnis angezeigt
Modi:
Command Mode:
Im command-Mode haben Befehle den folgenden Aufbau:
[count][command][range]
oder
[command][count][range]
[count] ist Dabei optional. Es gibt an, wie oft [command] oder [range] ausgeführt werden soll.
Mit „range“ bezeichne ich Sprungbefehle. Sie werden benutzt, um sich innerhalb der Datei zu bewegen. Manche commands erwarten keine range.
Die wichtigsten Commands:
d - delete - löschen y - yank - in den zwischenspeicher kopieren yw - Wort kopieren yy - Zeile kopieren 3yy - 3 Zeilen kopieren p - vorher Kopiertes einfügen (put | leichter zu merken ist "paste") P - vorher Kopiertes *vor* dem Cursor einfügen c - change - löschen, und danach in den insert-Modus wechseln shift + J - fügt Zeilen zusammen
Die gebräuchlisten Ranges:
w - Wort vorwärts springen b - Wort rückwärts springen
Beispiele:
w - Wort weiterspringen dw - Wort löschen - command "delete", reichweite "Cursor bis Sprungende" (Wort) einfach zu merken mit "del word" d2w - einmal zwei Worte löschen 2dw - zwei mal ein Wort löschen (gleiches ergebnis wie d2w) 10i- - 10 "-" einfügen (erst beim Wechsel in den command-Mode, da ja der ganze insert-Mode (i) 10 mal ausgeführt wird)
Das ist der grundsätzliche Aufbau, den man mit allen anderen Befehlen kombiniert.
Andere Nützlichkeiten im command-Mode:
. - letzes command wiederholen. cw - Wort austauschen. Wie "dwi". "change word" i - in den insert-Modus wechseln I - in den insert-Modus wechseln und Cursor an den Anfang der Zeile positionieren. Kurz: Wenn man etwas am Anfang der Zeile einfügen will a - append -> wenn man etwas hinter dem Cursor einfügen will A - append -> wenn man etwas am Ende der Zeile einfügen will o - open new line - Leerzeile anfügen + insert-Mode O - open new line - Leerzeile einfügen + insert-Mode ddp - aktuelle Zeile eins nach unten verschieben xp - Buchstaben vertauschen
Bewegen im command-mode / „range“-Befehle:
w - Wort weiter springen
W - wie w, überspringt aber mehr (z.B. Kommas)
b - Wort zurück springen
B - wie b, überspringt aber mehr (z.B. Kommas)
e - springt bis zum Ende des Wortes unter dem Cursor
E - wie E, überspringt aber mehr (z.B. Kommas)
{ } - Absatz vor/zurück springen. Sehr praktisch in einer .rhosts!
0 - pos1
$ - ende
* - springt vorwärts zum nächsten Vorkommen des Wortes unter dem Cursor
# - springt rücwärts zum vorherigen Vorkommen des Wortes unter dem Cursor
Insert Mode:
Insert Modus - wenn unten „insert“ steht. Was man drueckt wird direkt eingefuegt. Verlassen mit ESC
Ex Mode:
:w <Datei> - Speichert es in einer neuen Datei :e . - Eine andere Datei auf dem aktuellen Verzeichnis öffnen :e /etc/passwd - Die Datei passwd öffnen :r /etc/hosts - Den Inhalt der angegebenen Datei an die Cursorposition des offenen Dokuments einlesen :tabnew - Neuen Tab erstellen :tabnext - In den nächsten Tab springen :tabclose - Tab schließen :redo - Holt den Text wieder wenn ich zuviele undos gemacht habe
Suchen und ersetzen:
:1,60 - ersetzen von Reihe 1-60 :1,$ - ganzer Text (bis Textende) :% - ganzer Text (ebenfalls bis Textende) :.,+10 - von der Courser Position an Zehn Zeilen :-5,10
:%s/bash$/sh/ - ersetzt bash wenn es am Ende steht durch sh :%s/bash/sh/ - ersetzt bash durch sh, aber pro Zeile nur den ersten treffen :%s/bash/sh/g - ersetzt bash durch sh, im ganzen Text, auch mehrmals pro Zeile wenn es vorkommt :%s/bash/sh/gc - ersetzt bash druch sh, im ganzen Text, auch mehrmals pro Zeiel wenn es vorkommt und man wird gefragt ob man das ändern will
:%s/^a/A/ - ersetzt alle kleingeschrieben a am Anfang jeder Zeile durch ein A
:help <Befehl> :syntax on - Syntax highlighting :set number :set nonumber :set list - Steuerzeichen anzeigen :set all - Zeigt alle Befehle an in Kombination mit set
Visual Mode:
neben den 3 standard-Modi hat vim noch den Visual mode. Er ist wie normales Markieren mit shift-Cursortasten und wählt einen Bereich aus, den man dann mit commands editieren kann.
v normales markieren V zeilenweises markieren ^V eckiges markieren (block mode)
Bsp: Block auskommentieren im Visual Mode:
Mit Strg-V in den Modus --VISUELL BLOCK-- wechseln. Die Zeilen die auskommentiert werden sollen mit den Cursor Tasten markieren. Mit Shift-I in den Einfüge Modus wechseln. Das Kommentarzeichen (z.B. #) einfügen. ESC drücken um aus dem Modus zu kommen.
Die Zeilen bekommen wie von Zauberhand das '#' Zeichen vorangestellt.
Bsp: Block entkommentieren im Visual Mode:
Mit Strg-V in den Modus --VISUELL BLOCK-- wechseln. Die Zeilen die entkommentiert werden sollen mit den Cursor Tasten markieren. Die Entf Taste drücken. Fertig.
| Befehl | SuSE Paket | Debian Paket | CentOS Paket | Beschreibung |
| mcedit | mc | mc | Teil vom Midnight Commander | |
| nano |