Kommandozeile
vim
-r Datei
|
Öffne
Datei und verwende die letzte vor dem Absturz gesicherte Version
|
vim
+n Datei
|
Öffne
Datei und positioniere den Cursor auf Zeile n
|
vim
+ Datei
|
Öffne
Datei und positioniere den Cursor am Dateiende (letzte Zeile)
|
vim
Datei1.Datein
|
Öffne
Datei1 bis Datein
|
vim
+/string Datei
|
Öffne
Datei und positioniere den Cursor in der Zeile, die string aufweist
|
vim -d a.txt
b.txt
|
Dateien
a.txt und b.txt vergleichen (Diff)
|
vim -d a.txt b.txt
|
Dateien
a.txt und b.txt vergleichen (Diff)
|
vim
-p a.txt b.txt c.txt
|
Dateien
a.txt, b.txt, c.txt in getrennten Tabs öffnen
|
gf
|
(go
file) Öffnet Datei, die unter dem Cursor steht
|
Dateihandhabung
:wq
|
aktuelle
Datei speichern und vim verlassen
|
:q!
|
vim
beenden, ohne Datei zu speichern
|
:w
|
aktuelle
Datei speichern
|
:w
Datei
|
aktuelle
Datei speichern unter anderem Namen
|
:w!
|
erzwingt
das überschreiben der Datei (auch schreibgeschützte)
|
:wall
|
schreibt
alle geänderten Dateien auf einmal
|
:m,nw
Datei
|
Zeile
m bis Zeile n der aktuellen Datei in andere Datei speichern
|
:help
|
Hilfe
aufrufen. Beenden der Hilfe mit :q wobei der Cursor im Hilfefenster stehen
muss
|
:r
Datei
|
Inhalt
einer anderen Datei in aktuelle Datei einfügen
|
:nr
Datei
|
Inhalt
von Datei in der Zeile n einfügen
|
:n
|
wenn
mehrere Dateien im Buffer zur nächsten springen
|
:rew
|
wenn
mehrere Dateien im Buffer zur vorherigen springen
|
:w
%.sik
|
Speichert
die aktuelle Datei mit der Endung .sik
|
:argadd
Dateien
|
Dateien
zur Bearbeitung in den Buffer laden
|
:buffers
|
Liste
der Dateien im Buffer
|
Teil
des Dateinamens[TAB]
|
Dateinamen
vervollständigen
|
Naviagation
h,j,k,l
|
Cursor
nach links, unten, oben, rechts
bewegen
|
$
|
Cursor
zum Zeilenende
|
0
|
Cursor
zum Zeilenanfang
|
+
|
Cursor
zum Anfang der nächsten Zeile
|
-
|
Cursor
zum Anfang der vorigen Zeile
|
W
|
Cursor
zum Anfang des nächsten Wortes bewegen
|
W
|
Cursor
zum Anfang des nächsten Wortes bewegen (Sonderzeichen werden nicht
berücksichtigt)
|
B
|
Cursor
zum Anfang des vorhergehenden Wortes bewegen
|
B
|
Cursor
zum Anfang des vorhergehenden Wortes bewegen (Sonderzeichen werden nicht
berücksichtigt)
|
E
|
Cursor
zum Ende des nächsten Wortes bewegen
|
E
|
Cursor
zum Ende des nächsten Wortes bewegen (Sonderzeichen werden nicht
berücksichtigt)
|
H
|
Cursor
auf die 1. Zeile des Bildschirms bewegen
|
M
|
Cursor
auf die mittlere Zeile des Bildschirms bewegen
|
L
|
Cursor
auf die unterste Zeile des Bildschirms bewegen
|
gg
|
Cursor
auf die 1. Zeile des Dokuments bewegen
|
nG
|
Cursor
auf die Zeile n des Dokuments bewegen
|
G
|
Cursor
auf die letzte Zeile des Dokuments bewegen
|
n+
|
Cursor
n Zeilen vorwärts bewegen
|
n-
|
Cursor
n Zeilen rückwärts bewegen
|
(
|
Cursor
zum Anfang des Satzes bewegen (Satz ist mittels . definiert)
|
)
|
Cursor
zum Anfang des nächsten Satzes bewegen (Satz wird mittels . definiert)
|
{
|
Cursor
zum Anfang des Absatzes bewegen (Absatz ist mittels Leerzeile definiert)
|
}
|
Cursor
zum Anfang des nächsten Absatzes bewegen (Absatz ist mittels Leerzeile
definiert)
|
%
|
Suche
die nächste Klammer, oder verwende die Klammer unter dem Cursor und springe
zum Gegenstück
Gefunden werden () [] {} #if /*
|
n[
Klammer
|
Rückwärts
zur n-ten öffnenden Klammer springen
|
N]
Klammer
|
Vorwärts
zur n-ten schließenden Klammer springen
|
[STRG]+[F]
|
eine
Seite vorwärts blättern
|
[STRG]+[B]
|
eine
Seite rückwärts blättern
|
[STRG]+[D]
|
eine
halbe Seite vorwärts blättern
|
[STRG]+[U]
|
eine
halbe Seite rückwärts blättern
|
z
[RETURN]
|
aktuelle
Zeile als erste Zeile am Bildschirm darstellen
|
z.
|
aktuelle
Zeile in der Mitte des Bildschirms darstellen
|
Z
|
aktuelle
Zeile als letzte Zeile am Bildschirm darstellen
|
`.
|
Zur
letzten Änderung springen
|
Textbearbeitung (an-/einfügen, ändern)
a
|
(append)
Text nach dem Cursor einfügen
|
i
|
(insert)
Text vor dem Cursor einfügen
|
o
|
unter
dem Cursor eine neue Zeile anfügen
|
A
|
Text
am Zeilenende einfügen
|
I
|
Text
am Zeilenanfang einfügen
|
o
|
unter
dem Cursor eine neue Zeile einfügen
|
O
|
über
dem Cursor eine neue Zeile einfügen
|
R
|
Ersetzungsmodus
starten
|
S
|
Gesamte
Zeile ändern
|
rcharacter
|
aktuelles
Zeichen durch character ersetzen
|
stext
|
aktuelles
Zeichen durch text ersetzen
|
Stext
|
aktuelles
Zeile durch text ersetzen
|
cwtext
|
aktuelles
Wort durch text ersetzen
|
ncwtext
n
|
Wörter
ab Cursor durch text ersetzen
|
Ctext
|
aktuelle
Zeile von Cursor bis Zeilenende durch text ersetzen
|
caB
ciB
|
Change
a block
Löscht den gesamten Inhalt innerhalb einer {} mitsamt der {}
Gleiches, nur {} stehen lassen
|
cab
cib
|
Change
a block
Löscht den gesamten Inhalt innerhalb einer () mitsamt der ()
Gleiches,
nur () stehen lassen
|
2cw
|
Nächsten
2 Wörter ändern
|
Textbearbeitung (löschen)
X
|
durch
Cursor markiertes Zeichen löschen
|
nx
|
n
Zeichen ab Cursor löschen
|
dd
|
aktuelle
Zeile ausschneiden
|
ndd
|
ausschneiden
der nächsten n Zeilen, inkl. der aktuellen
|
dw
|
aktuelles
Wort löschen
|
dW
|
aktuelles
Wort inkl. vorhandener Sonderzeichen löschen
|
ndw
|
n
Wörter ab aktuellem Wort löschen
|
db
|
vorhergehendes
Wort löschen
|
dB
|
vorhergehendes
Wort inkl. vorhandener Sonderzeichen löschen
|
ndb
|
n
Wörter vor dem Cursor löschen
|
d^
oder d0
|
aktuelle
Zeile vom Cursor bis Zeilenanfang löschen
|
d$
oder D
|
aktuelle
Zeile vom Cursor bis Zeilenende löschen
|
:m,nd
|
Zeilen
m bis n löschen
|
D2f)
|
Von
der Cursorposition bis zur zweiten schließenden, runden Klammer in der
aktuellen Zeile löschen
|
c%
|
Wenn
der Cursor auf einer Klammer steht, alles bis zur Gegenklammer löschen
|
:g/INSERT/d
:v/INSERT/d
|
Löscht
alle Zeilen in denen „INSERT“ steht
Löscht alle Zeilen in denen „INSERT“ nicht steht
|
:%g/^$/d
|
Leere
Zeilen löschen
|
Textbearbeitung (kopieren (yank) und einfügen)
y
/ yy
|
aktuelle
Zeile speichern
|
nyy
/ nY
|
n
Zeilen ab der aktuellen Cursorposition speichern
|
y0
|
Text
bis zum Anfang der Zeile kopieren
|
y$
|
Text
bis zum Ende der Zeile kopieren
|
"*Y
|
aktuelle
Zeile in globale Zwischenablage kopieren
|
P
|
gespeicherten
Text nach dem Cursor einfügen
|
P
|
gespeicherten
Text vor dem Cursor einfügen
|
"*p
|
Zeile
aus globaler Zwischenablage nach dem Cursor einfügen
|
"*P
|
Zeile
aus globaler Zwischenablage vor dem Cursor einfügen
|
xp
2
|
Zeichen
vertauschen
|
Deep
|
2
Wörter vertauschen
|
Ddkp
|
aktuelle
Zeile mit vorhergehender Zeile tauschen
|
Ddp
|
aktuelle
Zeile mit nachfolgender Zeile tauschen
|
J
|
2
Zeilen zusammenfügen
|
nJ
|
n
Zeilen zusammenfügen
|
gJ
|
2
Zeilen zusammenfassen ohne Leerzeichen
|
[STRG]+[n]
|
Vervollständigung
des geschriebenen Wortes.
Vim sucht dann in der offenen Datei und in den include-Dateien nach Treffern
|
:abbr
Alias Ersatz
|
Speichert
einen Alias für einen Text
„Alias“ wird durch „Ersatz“ nach der Leertaste oder Enter ersetzt.
(Abkürzung)
|
:r
!cmd
|
das
Ergebnis vom cmd wird am Zeilenende eingefügt. Beispiel:
:r !date = fügt aktuelles Datum ein
:r datei = fügt Datei ein
|
Suchen und Ersetzen
*
|
Wort
unter dem Cursor vorwärts suchen
|
#
|
Wort
unter dem Cursor rückwärts suchen
|
:nohlsearch
|
Markierung
nach Suche abschalten
|
Gd
|
Springt
zur Deklaration der Variablen, die unter dem Cursor liegt
|
/string
|
ab
der aktuellen Position vorwärts nach string suchen
|
?string
|
ab
der aktuellen Position rückwärts nach string suchen
|
N
|
Suchvorgang wiederholen
|
:m,ns/string1/string2/g
|
ersetzt
von Zeile m bis Zeile n string1 durch string2
|
:%s/string1/string2/g
|
string1
durch string2 ersetzt im gesamten Dokument
|
:%s/string1/string2/gc
|
string1
durch string 2 mit Nachfrage
|
:g/string/cmd
|
führt
cmd in allen Zeilen die string enthalten aus
|
:v/string/cmd
|
führt
cmd in allen Zeilen die string nicht enthalten aus
|
:g/fuubar/s/foo/bar/ foo
|
bar
nur in den Zeilen ersetzen in denen fuubar vorkommt
|
:%s/STL =
‘.*\’/STL = ‘’
|
Suche
mit Joker (egal was zwischen ‘‘ steht), dann ändern
|
:set hidden
:argdo %s/foo/bar/g
:wall
|
ersetzt
in allen geöffneten Dateien foo durch bar und speichert die Dateien
|
q/
|
Historie
der Suchfunktion anzeigen
|
/
[STRG]+[R] [STRG]+[W]
|
Zeichenkette
als Suchmustervorlage verwenden um diese zu ändern
|
/
[STRG]+[R] + [a]
|
Suchmuster
aus Register a übernehmen
|
:%s^s*$//g
|
Leerzeichen
und Tabulatoren am Zeilenende löschen
|
[I
|
Treffer
des Wortes unter dem Cursor wird in einer Liste angezeigt
|
[STRG]+x
[STRG]+l
|
Eine
begonnene Zeile wird so vervollständigt, wie schon vorhandene
|
grep -i sucht *.ssh | copen
Strg+W T
:cclose
|
Suche
im aktuellen Verzeichnis
Öffnet die gefundene Stelle im neuen Tab
schließt das Findenfenster
|
Makros
q
character
|
startet
die Makroaufzeichnung, wobei das Makro im Register character (=az)
gespeichert wird
|
Q
|
beendet
die Makroaufzeichnung
|
@character
|
führt
das im Register character gespeicherte Makro aus
|
n@character
|
führt
das im Register character gespeicherte Makro n mal aus
|
Fenster
[STRG]+[w] s
oder :split
|
Fenster
horizontal teilen
|
[STRG]+[w]
v oder :vsplit
|
Fenster
vertikal teilen
|
[STRG]+[k]
|
zwischen
den Fenstern wechseln (oben)
|
[STRG]+[j]
|
zwischen
den Fenstern wechseln (unten)
|
[STRG]+[h]
|
zwischen
den Fenstern wechseln (links)
|
[STRG]+[l]
|
zwischen
den Fenstern wechseln (rechts)
|
[STRG]+[w]
_
|
Fenstergröße
maximieren horizontal
|
[STRG]+[w]
|
|
Fenstergröße
maximieren vertikal
|
[STRG]+[w]
=
|
Fenstern
gleiche Größe zuweisen
|
[STRG]+[w]
+
|
horizontal
geteiltes Fenster vergrößern
|
[STRG]+[w]
-
|
horizontal
geteiltes Fenster verkleinern
|
[STRG]+[w]
5<
|
vertikal
geteiltes Fenster um 5 Spalten vergrößern
|
[STRG]+[w]
>
|
vertikal
geteiltes Fenster verkleinern
|
Tabs (ab Version 7.x)
:tabs
|
Liste
der geöffneten Tabs anzeigen
|
:tab
n
|
Springe
zu Tab n
|
:tabc
n
|
Schließe
Tab n
|
:tabe
datei
|
Öffne
Datei in eigenem Tab
|
gt
|
Tab
vorwärts gt
|
gT
|
Tab
rückwärts
|
:tabm
m
|
Verschiebe
das aktuelle Tab auf Position m
|
:tabr
|
Zum
ersten Tab springen
|
:tabl
|
Zum
letzten Tab springen
|
Markierungen (Marken)
m{Buchstaben}
|
setzte
Markierung
(a..z) Lokal gültige Marken
(A..Z Global gültige Marken. Zusätzlich an den Dateinamen gebunden
|
'a
|
Springe
zu Marke a
|
:marks
|
Listet
alle Markierungen auf
|
v
|
Zeichenweise
markieren
|
V
|
Zeilenweise
markieren
|
v
[ALT] + mit Mouse markieren
|
Blockweise
markieren
|
Rückgängig und Wiederholen (undo and redo)
:u
oder u
|
Mach
Änderung rückgängig.
Die Historie speichert 1000 Vorgänge
|
U
|
Zuletzt
geänderte Zeile wieder herstellen
|
[STRG]+r
|
Letzten
rückgängig gemachten Befehl wiederholen
|
.
|
Letzten
Befehl wiederholen
|
Verschiedenes
:ce
|
Zeile
zentrieren
|
:ri
|
Zeile
rechtsbündig
|
:le
|
Zeile
linksbündig
|
~
|
aktuellen
Buchstaben in Klein-/Großbuchstaben wandeln
|
n~
|
n
Buchstaben ab Cursor in Klein-/Großbuchstaben wandeln
|
>i{
|
Zeilenblock
(innerhalb einer Klammer) nach links einrücken
|
<i{
|
Zeilenblock
innerhalb einer Klammer) nach rechts
ausrücken
|
n
>>
|
n
Zeilen nach links einrücken
|
n
<<
|
n
Zeilen nach rechts ausrücken
|
[STRG]+k+a+-
|
Sonderzeichen
eingeben ā
|
[STRG]+k+c+,
|
Sonderzeichen
eingeben ç
|
:%s/zeichenfolge//gn
|
Zähl
die Anzahl der Treffer
|
:ha
|
Datei
drucken (hardcopy)
|
:x,y!cmd
|
Führt
cmd von Zeile y bis Zeile y aus
|
:x,y
befehl
|
Führt
einen vim-Befehl aus
|
:h
internal-variables
|
Zeigt
alle Vim-Variablen an
|
:set
all
|
gesetzte
Optionen anzeigen
|
CTRL-K
14
|
Sonderzeichen
¼ eigeben.
Weitere Sonderzeichen anzeigen mit
:digraph
|
:so
Datei
|
Ex-Befehle
aus Datei lesen und ausführen
|
:tabnew
.
|
Dateiexplorer
für aktuelles Verzeichnis öffnen
|
Strg+W
T
|
Verschiebt
offenes Fenster in neuen Tab
|
:undolist
|
Listet
alle Änderungen auf
|
:!
cmd
|
führt
cmd in der Shell aus
|
find . -name
"*.c" -print | vim -
|
Ausgabe in vim
laden
|
Text falten (folding)
zfm
|
Erzeuge
Falte
|
Zo
|
Öffne
Falte
|
zO
|
Öffnet
alle Falten
|
Zc
|
Schließe
Falte
|
zC
|
Schließt
alle Falten
|
Zi
|
Macht
alle Faltungen unsichtbar, bzw sichtbar, falls sie unsichtbar sind
|
Ex-Kommandos
( für dauerhafte Nutzung in .vimrc)
:e
$MYVIMRC
|
vimrc
öffnen
:source $MYVIMRC Geänderte VIMRXC aktivieren
|
:set
syntax on
|
Syntaxhighlightning
aktivieren
|
:set syntax=ESS_formular
|
Syntaxfarben
für ESS-Formulare einschalten
|
:set encoding=utf-8
|
Encoding
umschalten
|
:set
errorbells
:set noerrorbells
|
Bei
Eingabefehler piepsen
wieder ausschalten
|
:set
ignorecase
|
Bei
der Suche Groß-/Kleinschreibung ignorieren
|
:set
list
|
Zeilenende
durch $ und Tabulator durch ^I anzeigen. Ausschalten mit :set nolist
|
:set
number
|
Zeilennummer
anzeigen
|
:set
showmode
|
Vi-Modus
in Statuszeile anzeigen (INSERT, APPEND, . . . )
|
:set
wrapmargin=NN
|
Automatischer
Umbruch NN Zeichen vor Zeilenende (0=kein Umbruch!)
|
:set
bs=2
|
Backspace-Taste
und Entf-Taste können dann auch das Zeilenende löschen
|
:set
tw=80
VIP
GQ
|
Nach
wie vielen Zeichen soll der automatische Zeilenumbruch passieren
Beispiel Zeilenumbuchänderung
Markiert den aktuellen Absatz
Bricht den Absatz mit den neuen Zeilenlängen um
|
:set
ignorecase
|
Groß-
Kleinschreibung bei der Suche ignorieren
|
:set
autoident
|
Einrücken
aus der vorherigen Zeile übernehmen
[STRG]+d zurückschieben
[STRG]+t erneut einrücken
|
:set
shiftwidth=4
|
Einrückbreite
4 Zeichen
|
:set
tabstop=4
|
Tabulatorbreite
4 Zeichen
|
:set
spell spelllang=de,en
|
Rechtschreibehilfe,
Rechtschreibkontrolle
|
:set
noswapfile
viminfo=
|
Schaltet
die Erstellung der Swapdatei aus
|
set
enc=utf-8
|
Stellt
die encoding auf utf-8 um
|
|
|