Vim Spickzettel für Systemadministratoren
- Hilfe anfragen
- → Alle Minitutorials
- → Alle deutschsprachigen Blogartikel
- → Alle englischsprachigen Blogartikel
- → Lernumgebungen
- → FreeBSD Linkliste
Auf dieser Seite:
- Wie wechselt man zwischen den Vim NORMAL, INSERT, VISUAL, oder command Modi?
- Wie arbeitet man mit mehreren Fenstern in Vim?
- Wie bewegt man den Vim Cursor?
- Wie funktioniert Suchen und Ersetzen in Vim?
- Wie editiert oder löscht man einzelne Zeichen, Wörter oder Zeilen in Vim?
- Welche besonderen Funktionen bietet Vim?
- Wie belegt man Funktionstasten in Vim für vereinfachtes Editieren von HTML?
- .vimrc Beispielkonfiguration für Vim
Es empfiehlt sich vor der weiteren Lektüre 60 Minuten in den Vimtutor zu investieren. Diesen gibt es auch in der Kommandozeile über vimtutor oder innerhalb von Vim über :help tutor. Vim erlaubt es, Textdateien mit hoher Effizienz zu bearbeiten, ohne dabei eine Maus bewegen zu müssen.
Wie wechselt man zwischen den Vim NORMAL, INSERT, VISUAL, oder command Modi?
- Der Ausgangspunkt nach dem Start ist immer der NORMAL Modus. Von hier aus geht es folgende Möglichkeiten:
- Im NORMAL Modus kann man die letzte Handlung wiederholen, z.B. das Ersetzen eines Buchstabens, an einer beliebigen anderen Stelle durch eingabe eines Punkts. Ein Punkt: .
- Mithilfe des Doppelpunkts : gelangt man in den command Modus. An dieser Stelle folgt direkt und ohne Leerzeichen die Befehlseingabe. Beispiel: :help
- Die Eingabe eines v aktiviert den VISUAL Modus, welcher das Markieren von Text für die weitere Verarbeitung ermöglicht. Die Textauswahl im VISUAL Modus erfolgt durch Bewegen des Cursors. Der Großbuchstabe V aktiviert nicht nur den VISUAL Modues, sondern markiert gleichzeitig auch die volle Zeile an der Cursorposition.
- Die eigentliche Textingabe findet im INSERT Modus statt. In diesen gelangt man über:
- i beziehungsweise a aktivieren den INSERT Modus vor oder nach der aktuellen Position des Cursors.
- Die entsprechenden Großbuchstben I und A aktivieren den INSERT Modus am Anfang beziehungsweise am Ende derjenigen Zeile, in der sich der Cursor befindet.
- Die Eingabe von O (der Großbuchstabe, nicht die Zahl) fügt eine leere Zeile oberhalb der Cursorposition ein und aktiviert den INSERT Modues. Der Kleinbuchstabe o hat denselben Effekt, jedoch unterhalb der aktuellen Position des Cursors.
- Über die ESC Taste gelangt man zurück in den NORMAL Modus.
Wie arbeitet man mit mehreren Fenstern in Vim?
Das Aufteilen des Fensters oder das Arbeiten mit Reitern ist möglich.
Wie teilt man ein Vim Fenster horizontal oder vertikal?
:split your_file.txt beziehungsweise :vnew other_file.txt.
Wie ändert man die Größe eines geteilten Fensters in Vim?
STRG+w mit folgendem + oder - (horizontale Aufteilung) oder < oder > (vertikale Aufteilung).
Wie wechselt man zwischen geteilten Fenstern in Vim?
STRG+ww, also zwei Mal der Buchstabe w, mit schnell aufeinanderfolgender Eingabe.
Was ist zu tun, wenn sich aufgeteilte Fensterbereiche in Vim zu überlappen scheinen und die zu bearbeitende Textdatei verborgen ist?
STRG-o und STRG-i lassen den fraglichen Fensterbereich wieder im Vordergrund erscheinen.
Wie nutzt man Reiter (Tabs) in Vim?
:tabnew öfnet ein neues Fenster in Form eines Reiters. Über gt und gT springt man einen Reiter nach vorne beziehungsweise zurück. Mit Ausnahme des aktiven Fensters schließt man alle anderen Reiter über :tabo.
Der Reiter oder das geteilte Fenster in Vim ist leer, wie öffnet man an dieser Stelle eine Textdatei?
:e mit folgender Angabe eines Dateipfads. Die Tabulatortaste ermöglicht die Autovervollständigung.
Wie bewegt man den Vim Cursor?
In den meisten Fällen kann man intuitiv die Pfeiltasten nutzen. Sollte das nicht möglich sein, so bewegt man den Cursor über die Tasten hjkl im NORMAL Modus.
Wie gelangt man in die erste Zeile im Vim NORMAL Modus?
gg
Wie gelant man in die letzte Zeile im Vim NORMAL Modus?
G
Wie gelangt man in die oberste Zeile des aktuell sichtbaren Bereichs im Vim NORMAL Modus?
H
Wie gelant man in die mittlere Zeile des aktuell sichtbaren Bereichs im Vim NORMAL Modus?
M
Wie gelant man in die unterste Zeile des aktuell sichtbaren Bereichs im Vim NORMAL Modus?
L
Wie springt man zu einer anderen Zeile im Vim NORMAL Modus?
15G für Zeile 15.
Wie springt man eine bestimmte Anzahl an Zeilen im Vim NORMAL Modus?
23- springt 23 Zeilen nach oben. 42+ springt 42 Zeilen nach unten.
Wie springt man an den Anfang der Zeile oberhalb Vim NORMAL Modus?
- (Bindestrich).
Wie springt man in eine Zeile mithilfe des Vim command Modus?
:15 und mit Enter bestätigen.
Wie springt man eine bestimmte Anzahl an Zeilen mithilfe des Vim command Modus?
:-15 springt 15 Zeilen zurück, dagegen springt :+15 15 Zeilen vorwärts.
Wie bewegt man den Cursor zum ersten Buchstaben des folgenden Wortes im Vim NORMAL Modus?
w
Wie bewegt man den Cursor zum letzten Buchstaben des folgenden Wortes imVim NORMAL Modus?
e
Wie bewegt man den Cursor zum ersten Buchstaben des vorherigen Wortes im Vim NORMAL Modus?
b
Wie führt man Cursorbewegungen mehrmals gleichzeitig aus im Vim NORMAL Modus?
6e springt an das Ende des an sechster Stelle folgenden Wortes.
Wie bewegt man den Cursor an den Anfang oder das Ende einer Zeile im Vim NORMAL Modus?
0 (die Zahl) bewegt den Cursor an den Anfang einer Zeile. $ führt zum Ende der Zeile.
Wie springt man zwischen Klammerpaaren im Vim NORMAL Modus?
Das Prozentzeichen % springt zwischen einer öffnenden und schließenden Klammer hin und her.
Wie funktioniert Suchen und Ersetzen in Vim?
Vim benötigt den Backslash \ als Fluchtsymbol sofern eines der folgenden Zeichen Bestandteil eines Suchtreffers sein soll.
& ` ^ $ . * [ ~ ) + / \ :
# manche Systeme erfordern dieses Vorgehen auch beim Leerzeichen
Wie sucht man in einer Datei vorwärts oder rückwärts im Vim NORMAL Modus?
/searchterm beziehungsweise ?searchterm.
Wie springt man zum nächsten oder vorherigen Suchergebnis nach erfolgter Suche in Vim?
n beziehungsweise N.
Wie sucht man das Wort, auf welchem sich der Cursor aktuell befindet im Vim NORMAL Modus?
Eingabe von #.
Wie entfernt man die Hervorhebung von Vim Suchergebnissen?
:noh aus dem Vim NORMAL Modus heraus und mit Enter bestätigen.
Wie sucht man nach mehreren Wörtern im Vim NORMAL Modus?
/searchterm\|secondsearchterm für eine ODER-Suche. Die exakte Folge von Wörtern findet man durch Nutzung des Fluchtsymbols vor den Leerzeichen: /exact\ sequence\ of\ words.
Wie ignoriert man Groß- und Kleinschreibung bei der Suche in Vim?
:set ic und zum Zurücksetzen :set noic.
Wie funktionier das Suchen und Ersetzen über die gesamte Datei hinweg oder über einen definierten Zeilenbereich im Vim NORMAL Modus?
:%s/old/new/g beziehungsweise :42,1337s/old/new/g.
Beachten Sie, dass die Syntax für das Suchen und Ersetzen im Vim im Wesentlichen der Syntax des sed Kommandos entspricht (sed Kommando Beispiele).
Wie kann man in Vim bewirken, vor jedem einzelnen Ersetzen zur Bestätigung aufgefordert zu werden?
Beispielsweise :%s/old/new/gc oder :42,1337s/old/new/gc.
Wie entfernt man doppelt vorhandene Zeilen im Vim Texteditor?
Die Auswahl kann entweder über den VISUAL Modus erfolgen oder man definiert einen Zeilenbereich: :42,1337!uniq
Wie ändert man in Vim im VISUAL Modus markierten Text in Großbuchstaben?
Zunächst markieren, dann U für Großbuchstaben oder u für Kleinbuchstaben. Der Wechsel zwischen Groß- und Kleinbuchstaben in einer im VISUAL Modus markierten Auswahl erfolgt über ~ (Tilde).
Wie kann man sich das Suchen und Ersetzen zunutze machen, um den ersten Buchstaben eines jeden im Vim VISUAL Modus markierten Worts in einen Großbuchstaben zu ändern?
s/\<./\u&/g
\< erkennt den Beginn eines Worts als Treffer
. erkennt den ersten Buchstaben eines Worts als Treffer
\u lässt Vim den folgenden Buchstaben im zu ersetzenden Wort (&) großschreiben
& ersetzt Suchtreffer auf der linken Seite
g ersetzt global, nicht nur den ersten Treffer
Wie editiert oder löscht man einzelne Zeichen, Wörter oder Zeilen in Vim?
Wie entfernt oder ersetzt man ein einzelnes Zeichen im Vim NORMAL Modus?
x beziehungsweise r. Im letztn Fall folgt direkt die Eingabe des neuen Zeichens. Wird r auf eine aktive VISUAL Modus Markierung angewendet werden, so wird jedes Zeichen des ausgewählten Texts mit dem direkt danach eingegebenen Zeichen ersetzt.
Wie ersetzt man aufeinanderfolgende Zeichenketten beginnend von der Position des Cursors aus im Vim NORMAL Modus?
R und mit der Eingabe des neuen Texts beginnen. Manchmal nennt man dies auch den REPLACE Modus.
Wie löscht man in Vim die Zeile, in der sich der Cursor aktuell befindet?
dd
Wie nutzt man d für das Löschen zusammen mit einer Cursorbewegung in Vim, um einen Textanteil zu löschen?
3$d würde beginnend von der Cursorposition bis zum Ende der Zeile und die folgenden beiden Zeilen löschen. Man kann auch andere Cursorbewgungen wie z.B. 0 (die Zahl, nicht der Großbuchstabe) nutzen, um in Richtung des Zeilenanfangs zu löschen oder andere Anweisungen abgesehen von d ausführen.
Wie rückt man in Vim eine Zeile (NORMAL Modus) oder einen markierten Bereich (VISUAL Modus) ein??
> beziehungsweise >>, was ebenso in die jeweils andere Richtung funktioniert.
Wie löscht man Zeilen oberhalb und unterhalb der aktuellen Cursorposition im Vim NORMAL Modus?
:+3d beziehungsweise :-2d entfernen die dritte Zeile unterhalb und die zweite Zeile oberhalb der aktuellen Cursorposition.
:-5,-d entfernt alle 5 Zeilen oberhalb der aktuellen Cursorposition.
:+,+5d entfernt alle 5 Zeilen unterhalb der aktuellen Cursorposition.
Wie kopiert man eine ganze Zeile oder das an der Cursorposition befindliche Zeichen im Vim NORMAL Modus?
Y beziehungsweise y.
Wie fügt man aus dem Vim NORMAL Modus heraus ein?
p fügt vorher kopierten (oder gelöschten) Text rechts der Cursorposition ein. Eine komplette zwischengespeicherte Zeile wird unterhalb der Cursorposition eingefügt.
P fügt den kopierten (oder gelöschten) Inhalt links der aktuellen Cursorposition ein.
Wie macht man Änderungen aus dem Vim NORMAL Modus heraus rückgängig?
u macht die vorherige Änderung rückgänging und :redo oder STRG+R bewirkt das Gegenteil. Dies ist ähnlich zu STRG+Z und STRG+Y in vielen grafischen Oberflächen.
Wie fügt man dasselbe Zeichen an derselben Position in mehreren Zeilen gleichzeitig ein, z.B. um mehrere Zeilen Python Quelltext auszukommentieren?
Den gewünschten Bereich markieren mit v (VISUAL mode), dann Eingbe von :%norm i# (dies fügt ein einzelnes "#" am Zeilenanfang ein). Zwischen dem "i" und dem "#" befindet sich kein Leerzeichen.
Das Entfernen der ersten 18 Zeichen lässt sich folgendermaßen bewerkstelligen: :%norm 18x.
Die letzten 35 Zeichen einer Zeile lassen sich mit der Suchen und Ersetzen Syntax entfernen: s/.\{35}$//.
Welche besonderen Funktionen bietet Vim?
Wie öffnet man ein Terminal in Vim?
Über :term.
Wie kann man eine auf einem anderen Rechner befindliche Datei über das SCP Protokoll in Vim aus der Ferne editieren?
Diesem Beispiel geht eine vorherige Konfiguration der Datei ~/.ssh/config voraus. Der doppelte Forwardslash // zwischen den SSH Verbindungsdetails und dem Dateipfad auf dem entfernten Dateisystem markiert an dieser Stelle nicht ein zu nutzendes Protokoll.
vim scp://taken_from_Host_ssh_config_section//absolute/path/to/file.txt
# funktionier auch aus Vim heraus
:tabnew scp://taken_from_Host_ssh_config_section//absolute/path/to/file.txt
Wie lassen sich bislang in Vim genutzte Vim Kommandos inspizieren (Vim History) und erneut verwenden?
q: im NORMAL Modus. Das sich öffnende Fenster verhält sich wie ein geteiltes Fenster. Nach Auswahl des gewünschten Kommandos und der Bestätigung über Enter wird das Kommando erneut ausgefüht.
Wie führt man aus Vim heraus Shell Kommandos aus, z.B. um ein kleines Python Skript zu testen, ohne Vim zu verlassen?
:!clear && python your_miniscript.py
Wie speichert man markierten Text in Vim in einer anderen Datei?
Markierung über den VISUAL mode, danach :w /path/to/newfile.txt.
Wie fügt man den vollen Inhalt einer anderen Datei in einer in Vim geöffneten Datei ein?
:r ~/path/to/file.txt
Wie kann man STDOUT eines Shell Kommandos in Vim einfügen?
Beispielsweise würde :r !ls STDOUT des ls Kommandos einfügen.
:r !tail --lines=20 ~/.vimrc würde die letzten 20 Zeilen der Datei .vimrc einfügen.
Wie kann man sich eine Liste verfügbarer Vim Kommandos anzeigen lassen?
: und danach die Tabulatortaste zeigt eine Liste an (verhält sich wie die Autovervollständigung).
Wie konvertiert man nicht formatiertes JSON in lesbares JSON in Vim?
:%!jq konvertiert das unformatiere JSON in lesbares JSON (auf Mastodon entdeckt). Man beachte, dass jq ein Shell Kommando ist.
Wie belegt man Funktionstasten in Vim für vereinfachtes Editieren von HTML?
Dieser Artikel erklärt die Grundlagen der Tastenneubelegung in Vim.
Um HTML Dateien zu editieren bietet es sich an die Vim Konfigurationsdatei .vimrc mit dem folgenden Inhalt zu füllen. Dadurch erhalten die Funktionstasten F1-F8 eine neue Bedeutung. Die jeweiligen Elemente der Neubelegung und die entsprechende Syntax dürften erkennbar sein.
nnoremap <F1> <Esc>i<h1></h1><Esc>o<p></p><Esc>o<h2></h2>
nnoremap <F2> <Esc>i<h2></h2>
nnoremap <F3> <Esc>i<h3></h3>
nnoremap <F4> <Esc>i<p></p>
nnoremap <F5> <Esc>i<b></b>
nnoremap <F6> <Esc>i<pre><code><Esc>o</pre></code>
nnoremap <F7> <Esc>i<mark style="background-color: #FF0000; color: white">
nnoremap <F8> <Esc>i<a href="#anchor">jump to <div id="anchor"></a>
Ein Terminalemulator könnte mit eigenen Tastenbelegungen konfiguriert sein und die hier vorgenommenen Konfigurationen überschreiben. Es empfiehlt sich, Tastenneubelegungen einfach zu halten.
.vimrc Beispielkonfiguration für Vim
This file goes into a user's $HOME directory. Note that a blinking cursor in Vim is not necessarily something you need to set up in .vimrc. The cursor behaviour is taken from the terminal you use. For instance, xfce4-terminal has a section in its preferences where you can set a blinking cursor and this will persist when you use Vim.
" ein Kommentar, man nutzt hier nur EIN "
" Kommentare funktionieren nur an den Zeilenanfängen der .vimrc
" inaktive Kompatibilität zu vi aktiviert alle Vim Funktionen
set nocompatible
" ausschalten, dass ein Rechtsklick in den VISUAL mode führt
" es ist beabsichtigt, dass nach dem Gleichzeichen nichts weiter folgt
set mouse=
" Tabulator wird automatisch durch 4 Leerzeichen ersetzt
set autoindent expandtab tabstop=4 shiftwidth=4 softtabstop=4
" automatische Farbgebung bei erkannter Syntax
syntax on
" Anzeige von Zeilennummern
set number
" Zeilennummern, nut relativ zur Cursorposition
set relativenumber
" horizontale und/oder vertikale Linien zu Bestimmung der Cursorposition
set cursorline
set cursorcolumn
" Hervorheben von Suchergebnisse, ggf. stufenweise (incsearch)
set hlsearch
set incsearch
" Ignorieren von Groß- und Kleinschreibung bei der Suche
" set ic
" Hinweis, das der INSERT oder VISUAL Modus aktiv ist
set showmode
" Hervorheben des Gegenstücks einer Klammer bei Cursorbewegung
set showmatch
set history=1000
" Steuerung der Autovervollständigung bei Dateipfaden
set wildmenu
set wildmode=list:longest
set wildignore=*.docx,*.jpg,*.gif,*.pyc,*.exe,*.flv,*.img,*.xlsx
" Statuszeileninhalt
set statusline=
set statusline+=\ %F\ %M\ %Y\ %R
set statusline+=%=
set statusline+=\ ascii:\ %b\ hex:\ 0x%B\ row:\ %l\ col:\ %c\ percent:\%p%%
set laststatus=2
vim.org und der interne :help Bereich von Vim zeigt sehr viele Konfigurationsmöglichkeiten über .vimrc auf.