2020-04-26 05:04:54 +03:00
---
category: tool
tool: vim
2020-08-20 10:23:24 +03:00
lang: de-de
2020-04-26 05:04:54 +03:00
contributors:
- ["RadhikaG", "https://github.com/RadhikaG"]
translators:
- ["caminsha", "https://github.com/caminsha"]
filename: LearnVim-de.txt
---
[Vim ](http://www.vim.org )
(Vi IMproved) ist ein Klon von vi, dem bekannten Editor für Unix. Es ist ein
Texteditor, welcher mit Fokus auf Geschwindigkeit und Prouktivität entwickelt
wurde.
Vim hat viele Keybindings für ein schnelles navigieren und schnelles bearbeiten
einer Datei.
## Grundlagen, um in Vim zu navigieren
```
vim < filename > # Öffne < filename > in Vim
2020-04-27 00:57:37 +03:00
:help < topic > # Öffne die eingebaute Hilfe zum Thema < topic > , wenn
# es existiert
2020-04-27 00:17:30 +03:00
:q # Schließe vim
2020-04-26 05:04:54 +03:00
:w # Speichere diese Datei
2020-04-27 00:17:30 +03:00
:wq # Speichere diese Datei und schließe vim
ZZ # Speichere diese Datei und schließe vim
:q! # Schließe vim ohne die Datei zu speichern
2020-04-26 05:04:54 +03:00
# ! *zwingt* die Ausführung von :q,
# daher wird die Datei nicht gespeichert.
ZQ # Beende vim ohne die Datei zu speichern
:x # Speichere die Datei und beende vim
# Dies ist eine kürzere Version von :wq
u # Änderung rückgängig machen
CTRL+R # Änderung wiederherstellen
h # Den Cursor um ein Zeichen nach links bewegen
j # Den Cursor eine Zeile nach unten bewegen
k # Den Cursor eine Zeile nach oben bewegen
l # Den Cursor um ein Zeichen nach rechts bewegen
Ctrl+B # Gehe eine Bildschirmanzeige zurück
Ctrl+F # Gehe eine Bildschirmanzeige vorwärts
Ctrl+D # Gehe eine halbe Bildschirmanzeige vorwärts
Ctrl+U # Gehe eine halbe Bildschirmanzeige zurück
# Navigieren innerhalb einer Zeile
0 # Navigiere zum Anfang der Zeile
$ # Navigiere zum Ende der Zeile
2020-04-27 00:57:37 +03:00
^ # Navigiere zum ersten Zeichen, welches kein Leerzeichen ist
2020-04-26 05:04:54 +03:00
# Im Text suchen
/word # Hebt alle Ergebnisse nach dem Cursor hervor
?word # Hebt alle Ergebnisse vor dem Cursor hervor
n # Bewegt den Cursor zum nächsten Ergebnis nach der Suche
N # Bewegt den Cursor zum vorherigen Ergebnis der Suche
:%s/foo/bar/g # Ersetze "foo" durch "bar" in allen Zeilen
:s/foo/bar/g # Ersetze "foo" durch "bar" in der aktuellen Zeile
2020-04-27 00:57:37 +03:00
:%s/\n/\r/g # Ersetze das newline-Zeichen bei allen Zeilen durch
# ein carriage return
2020-04-26 05:04:54 +03:00
2020-04-27 00:13:57 +03:00
# Zu einzelnen Zeichen springen
2020-04-26 05:04:54 +03:00
2020-04-27 00:13:57 +03:00
f< character > # Springe vorwärts und auf dem Zeichen < character >
t< character > # Springe vorwärts und lande vor dem Zeichen < character >
2020-04-26 05:04:54 +03:00
2020-04-27 00:13:57 +03:00
# Zum Beispiel,
f< # Springe vorwärts und lande auf <
t< # Springe vorwärts und lande vor <
2020-04-26 05:04:54 +03:00
2020-04-27 00:13:57 +03:00
# Wortweise navigieren
2020-04-26 05:04:54 +03:00
2020-04-27 00:13:57 +03:00
w # Springe um ein Wort vorwärts
b # Gehe ein Wort zurück
e # Springe zum Ende des aktuellen Wortes
2020-04-26 05:04:54 +03:00
2020-04-27 00:13:57 +03:00
# Weitere Befehle, um zu navigieren
2020-04-26 05:04:54 +03:00
2020-04-27 00:13:57 +03:00
gg # Gehe an den Start der Datei
G # Gehe an das Ende der Datei
:NUM # Springe zur Zeile NUM (NUM kann eine beliebige Zahl sein)
2020-04-27 00:57:37 +03:00
H # Navigiere zum Start der aktuellen Bildschirmanzeige
M # Navigiere in die Mitte der aktuellen Bildschirmanzeige
L # Navigiere an das Ende der aktuellen Bildschirmanzeige
2020-04-26 05:04:54 +03:00
```
2020-04-27 00:13:57 +03:00
## Hilfsdokumente:
2020-04-26 05:04:54 +03:00
2020-04-27 00:13:57 +03:00
Vim hat eine eingebaute Dokumentation, welche mit `:help <topic>` aufgerufen
werden kann.
Zum Beispiel öffnet `:help navigation` die Dokumentation über das Navigieren
2020-04-26 05:04:54 +03:00
2020-04-27 00:13:57 +03:00
`:help` kann auch ohne ein Argument verwendet werden. Dies zeigt den Standard-
Hilfsdialog an, welcher den Start mit vim einfacher macht.
2020-04-26 05:04:54 +03:00
that aims to make getting started with vim more approachable!
2020-04-27 00:13:57 +03:00
## Modi:
2020-04-26 05:04:54 +03:00
2020-04-27 00:13:57 +03:00
Vim basiert auf dem Konzept von **modes** .
2020-04-26 05:04:54 +03:00
2020-04-27 00:57:37 +03:00
- Command Mode - Vim startet in diesem Modus, hier kann man navigieren und Befehle eingeben
2020-04-27 00:13:57 +03:00
- Insert Mode - Wird verwendet, um Änderungen in der Datei zu machen.
- Visual Mode - Wird verwendet, um Text zu markieren und Operationen durchzuführen
- Ex Mode - Wird verwendet, um im ':'-Prompt Befehle einzugeben
2020-04-26 05:04:54 +03:00
```
2020-04-27 00:13:57 +03:00
i # Führt vim in den Insert Mode, vor der Cursorposition
a # Führt vim in den Insert Mode, nach der Cursorposition
v # Führt vim in den Visual Mode
: # Führt vim in den Ex Mode
< esc > # Führt zurück in den Command Mode, egal in welchem Mode
# man sich gerade befindet.
# Kopieren und einfügen von Text
y # Kopiere alles, was im Moment ausgewählt ist
yy # Kopiert die aktuelle Zeile
d # Löscht alles, was im Moment ausgewählt ist
dd # Löscht die aktuelle Zeile
p # Fügt den kopierten Text nach dem Cursor ein
P # Fügt den kopierten Text vor dem Cursor ein
x # Löscht das Zeichen unter dem Cursor
2020-04-26 05:04:54 +03:00
```
2020-04-27 00:13:57 +03:00
## Die 'Grammatik' von Vim
2020-04-26 05:04:54 +03:00
2020-04-27 00:13:57 +03:00
Vim kann als Satz von Kommandos angesehen werden, welche im Format
'Verb-Modifier-Noun' sind. Hierbei gilt:
2020-04-26 05:04:54 +03:00
2020-04-27 00:13:57 +03:00
- Verb - die Aktion, du machen willst
- Modifier - wie die Aktion gemacht wird
- Noun - das Objekt, auf welchem die Aktion ausgeführt wird.
2020-04-26 05:04:54 +03:00
2020-04-27 00:57:37 +03:00
Einige wichtige Beispiele von 'Verb', 'Modifier' und 'Nouns':
2020-04-26 05:04:54 +03:00
```
2020-04-27 00:57:37 +03:00
# 'Verb'
2020-04-26 05:04:54 +03:00
2020-04-27 00:13:57 +03:00
d # löschen
c # ändern
y # kopieren
v # visuelles auswählen
2020-04-26 05:04:54 +03:00
# 'Modifiers'
2020-04-27 00:13:57 +03:00
i # innerhalb
2020-04-27 00:17:30 +03:00
a # außerhalb
2020-04-27 00:13:57 +03:00
NUM # Nummer (NUM kann irgendeine Zahl sein)
f # Sucht nach etwas und landet darauf
t # Sucht nach etwas und stoppt davor
/ # Suche eine Zeichenfolge ab dem Cursor
? # Suche eine Zeichenfolge vor dem Cursor
2020-04-26 05:04:54 +03:00
# 'Nouns'
2020-04-27 00:13:57 +03:00
w # Wort
s # Satz
p # Abschnitt
2020-04-26 05:04:54 +03:00
b # Block
2020-04-27 00:13:57 +03:00
# Beispielsätze resp. Kommandos
2020-04-26 05:04:54 +03:00
2020-04-27 00:13:57 +03:00
d2w # lösche zwei Wörter
cis # Ändere innerhalb des Satzes.
yip # Kopiere innerhalb des Abschnitts (kopiere den Abschnitt,
# in welchem du bist)
ct< # Ändere bis zur spitzen Klammer
# Ändere den Text von deiner aktuellen Cursorposition bis
# zur nächsten spitzen Klammer
d$ # Lösche bis zum Ende der Zeile
2020-04-26 05:04:54 +03:00
```
2020-04-27 00:13:57 +03:00
## Einige Shortcuts und Tricks
2020-04-26 05:04:54 +03:00
```
2020-04-27 00:13:57 +03:00
> # Rücke die Auswahl um einen Block ein
< # Lösche eine Einrückung der Auswahl
:earlier 15m # Stellt das Dokument so wieder her, wie es vor 15
# Minuten war
:later 15m # den oberen Befehl rückgängig machen
ddp # Vertauschen zweier aufeinanderfolgenden Zeilen
# Zuerst dd, dann p
. # Wiederhole die vorherige Aktion
:w !sudo tee % # Speichere die Datei als Root
:set syntax=c # Stelle das Syntax-Highlighting für 'C' ein
:sort # Alle Zeilen sortieren
:sort! # Alle Zeilen rückwärts sortieren
:sort u # Alle Zeilen sortieren und Duplikate entfernen
~ # Umschalten der Groß-/Kleinschreibung des ausgewählten Textes
u # Ausgewählten Text zu Kleinschreibung ändern
U # Ausgewählten Text zu Großschreibung ändern
2020-04-26 05:04:54 +03:00
2020-04-27 00:13:57 +03:00
# Text-Folding (Textfaltung)
zf # Erstelle eine Faltung des ausgewählten Textes
zo # Öffne die aktuelle Faltung
2020-04-27 00:17:30 +03:00
zc # Schließe die aktuelle Faltung
2020-04-27 00:13:57 +03:00
zR # Öffne alle Faltungen
2020-04-27 00:17:30 +03:00
zM # Schließe alle Faltungen
2020-04-26 05:04:54 +03:00
```
2020-04-27 00:13:57 +03:00
## Makros
2020-04-26 05:04:54 +03:00
2020-04-27 00:13:57 +03:00
Makros sind grundsätzlich einfach aufgezeichnete Aktionen
Wenn du mit dem Aufnehmen eines Makros beginnst, werden **alle** Aktionen und
Kommandos, welche du braucht, aufgenommen bis die Aufnahme gestoppt wird.
Wenn du ein Makro ausführst, werden exakt die gleichen Schritte gemacht.
2020-04-26 05:04:54 +03:00
```
2020-04-27 00:13:57 +03:00
qa # Starte das Aufnehmen des Makros 'a'
q # Beende das Aufnehmen
2020-04-27 00:57:37 +03:00
@a # Führe das Makro 'a' aus
2020-04-26 05:04:54 +03:00
```
2020-04-27 00:13:57 +03:00
### Konfigurieren mit ~/.vimrc
2020-04-26 05:04:54 +03:00
2020-04-27 00:13:57 +03:00
Die Datei .vimrc kann verwendet werden, um Vim beim Starten zu konfigurieren
2020-04-26 05:04:54 +03:00
2020-04-27 00:13:57 +03:00
Hier ist eine Beispiel ~/.vimrc Datei:
2020-04-26 05:04:54 +03:00
```
2020-04-27 00:13:57 +03:00
" Beispiel ~/.vimrc
2020-04-26 05:04:54 +03:00
2020-04-27 00:13:57 +03:00
" Erforderlich für vim, dass es iMproved ist.
2020-04-26 05:04:54 +03:00
set nocompatible
2020-04-27 00:13:57 +03:00
" Bestimme den Dateityp anhand des Namens, um ein intelligentes Einrücken etc.
" zu ermöglichen
2020-04-26 05:04:54 +03:00
filetype indent plugin on
2020-04-27 00:13:57 +03:00
" Aktiviere das Syntax-Highlighting
2020-04-26 05:04:54 +03:00
syntax on
2020-04-27 00:57:37 +03:00
" Bessere Kommandozeilen-Vervollständigung
2020-04-26 05:04:54 +03:00
set wildmenu
2020-04-27 00:17:30 +03:00
" Verwende die Suche ohne die Berücksichtigung der Groß-/Kleinschreibung, außer
" wenn mit Großbuchstaben gesucht wird.
2020-04-26 05:04:54 +03:00
set ignorecase
set smartcase
2020-04-27 00:13:57 +03:00
" Wenn eine neue Zeile erstellt wird und kein Dateispezifisches Einrücken
" aktiviert ist, behält die neue Zeile die gleiche Einrückung wie die aktuelle
" Zeile
2020-04-26 05:04:54 +03:00
set autoindent
2020-04-27 00:13:57 +03:00
" Zeige links die Zeilennummern an
2020-04-26 05:04:54 +03:00
set number
2020-04-27 00:13:57 +03:00
" Einrückungsoptionen, ändere diese nach deinen Vorlieben
2020-04-26 05:04:54 +03:00
2020-04-27 00:13:57 +03:00
" Anzahl sichtbarer Leerzeichen bei einem TAB
2020-04-26 05:04:54 +03:00
set tabstop=4
2020-04-27 00:13:57 +03:00
" Anzahl der Leerzeichen während des Bearbeitens bei einem TAB
2020-04-26 05:04:54 +03:00
set softtabstop=4
2020-04-27 00:13:57 +03:00
" Anzahl der Einrückungstiefe bei den Operationen (>> und < < )
2020-04-26 05:04:54 +03:00
set shiftwidth=4
2020-04-27 00:13:57 +03:00
" Konvertiere TABs zu Leerzeichen
2020-04-26 05:04:54 +03:00
set expandtab
" Enable intelligent tabbing and spacing for indentation and alignment
2020-04-27 00:13:57 +03:00
" Aktiviere intelligente Tabs und Leerzeichen bei der Einrückung und Ausrichtung
2020-04-26 05:04:54 +03:00
set smarttab
```
2020-04-27 00:13:57 +03:00
### Verweise
2020-04-26 05:04:54 +03:00
2020-04-27 00:13:57 +03:00
- [Vim | Homepage ](http://www.vim.org/index.php )
- In der Shell eingeben: `vimtutor`
- [Ein vim Tutorial und Primer, englisch ](https://danielmiessler.com/study/vim/ )
- [Deutsches Arch Linux Wiki ](https://wiki.archlinux.de/title/Vim )
- [Arch Linux Wiki, englisch (dafür ausführlicher) ](https://wiki.archlinux.org/index.php/Vim )
- [What are the dark corners of Vim your mom never told you about? (Stack Overflow thread) ](http://stackoverflow.com/questions/726894/what-are-the-dark-corners-of-vim-your-mom-never-told-you-about )