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:
2022-11-14 14:15:37 +03:00
- ["RadhikaG", "https://github.com/RadhikaG"]
2020-04-26 05:04:54 +03:00
translators:
2022-11-14 14:15:37 +03:00
- ["caminsha", "https://github.com/caminsha"]
2020-04-26 05:04:54 +03:00
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
2022-11-14 14:28:17 +03:00
Texteditor, welcher mit Fokus auf Geschwindigkeit und Produktivität entwickelt
2022-11-14 14:24:52 +03:00
wurde. Vim hat viele Keybindings für ein schnelles navigieren und schnelles
bearbeiten einer Datei.
2020-04-26 05:04:54 +03:00
## Grundlagen, um in Vim zu navigieren
```
2022-11-14 14:15:37 +03:00
vim < filename > # Öffne < filename > in Vim
:help < topic > # Öffne die eingebaute Hilfe zum Thema < topic > , wenn
2022-11-14 14:24:52 +03:00
# es existiert
2022-11-14 14:15:37 +03:00
:q # Schließe vim
:w # Speichere diese Datei
: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
2022-11-14 14:24:52 +03:00
# ! *zwingt* die Ausführung von :q,
# daher wird die Datei nicht gespeichert.
2022-11-14 14:15:37 +03:00
ZQ # Beende vim ohne die Datei zu speichern
:x # Speichere die Datei und beende vim
2022-11-14 14:24:52 +03:00
# Dies ist eine kürzere Version von :wq
2022-11-14 14:15:37 +03:00
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
2022-11-14 14:33:52 +03:00
Ctrl+B # Gehe eine Bildschirmanzeige zurück
Ctrl+F # Gehe eine Bildschirmanzeige vorwärts
Ctrl+D # Gehe eine halbe Bildschirmanzeige vorwärts
2022-11-14 14:15:37 +03:00
Ctrl+U # Gehe eine halbe Bildschirmanzeige zurück
# Navigieren innerhalb einer Zeile
0 # Navigiere zum Anfang der Zeile
$ # Navigiere zum Ende der Zeile
^ # Navigiere zum ersten Zeichen, welches kein Leerzeichen ist
# 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
:%s/\n/\r/g # Ersetze das newline-Zeichen bei allen Zeilen durch
2022-11-14 14:24:52 +03:00
# ein carriage return
2022-11-14 14:15:37 +03:00
# Zu einzelnen Zeichen springen
f< character > # Springe vorwärts und auf dem Zeichen < character >
t< character > # Springe vorwärts und lande vor dem Zeichen < character >
# Zum Beispiel,
f< # Springe vorwärts und lande auf <
t< # Springe vorwärts und lande vor <
# Wortweise navigieren
w # Springe um ein Wort vorwärts
b # Gehe ein Wort zurück
e # Springe zum Ende des aktuellen Wortes
# Weitere Befehle, um zu navigieren
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)
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
```
2022-11-14 14:33:52 +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
2022-11-14 14:33:52 +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
2022-11-14 14:54:14 +03:00
- Command Mode - Vims erster 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.
2022-11-14 14:33:52 +03:00
- Visual Mode - Wird verwendet, um Text zu markieren und diesen zu verändern
2020-04-27 00:13:57 +03:00
- Ex Mode - Wird verwendet, um im ':'-Prompt Befehle einzugeben
2020-04-26 05:04:54 +03:00
```
2022-11-14 14:15:37 +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
2022-11-14 14:24:52 +03:00
# man sich gerade befindet.
2022-11-14 14:15:37 +03:00
# 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
```
2022-11-14 14:15:37 +03:00
# 'Verb'
d # löschen
c # ändern
y # kopieren
v # visuelles auswählen
# 'Modifiers'
i # innerhalb
a # außerhalb
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
# 'Nouns'
w # Wort
s # Satz
p # Abschnitt
b # Block
# Beispielsätze resp. Kommandos
d2w # lösche zwei Wörter
cis # Ändere innerhalb des Satzes.
yip # Kopiere innerhalb des Abschnitts (kopiere den Abschnitt,
2022-11-14 14:24:52 +03:00
# in welchem du bist)
2022-11-14 14:15:37 +03:00
ct< # Ändere bis zur spitzen Klammer
2022-11-14 14:24:52 +03:00
# Ändere den Text von deiner aktuellen Cursorposition bis
# zur nächsten spitzen Klammer
2022-11-14 14:15:37 +03:00
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
```
2022-11-14 14:15:37 +03:00
> # Rücke die Auswahl um einen Block ein
< # Lösche eine Einrückung der Auswahl
2022-11-14 14:24:52 +03:00
:earlier 15m # Stellt das Dokument so wieder her, wie es vor 15 Minuten war
2022-11-14 14:15:37 +03:00
:later 15m # den oberen Befehl rückgängig machen
ddp # Vertauschen zweier aufeinanderfolgenden Zeilen
2022-11-14 14:24:52 +03:00
# Zuerst dd, dann p
2022-11-14 14:15:37 +03:00
. # 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
# Text-Folding (Textfaltung)
zf # Erstelle eine Faltung des ausgewählten Textes
zo # Öffne die aktuelle Faltung
zc # Schließe die aktuelle Faltung
zR # Öffne alle Faltungen
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
```
2022-11-14 14:15:37 +03:00
qa # Starte das Aufnehmen des Makros 'a'
q # Beende das Aufnehmen
@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 )