updated: | 2024 20. November |
published: | 2020 28. August |
VIM
The Best Editor ever.Eine kurze Befehlsübersicht findest du hier .
Vim-Modi
Vim verwendet verschiedene Modi zwischen denen man durch folgende Tasten wechselt.
- Kommandomodus
[:] |
allgemein bzw. Befehl |
[/] |
suchen abwärts ab Cursorposition |
[?] |
suchen aufwärts ab Cursorposition |
- Editier- oder Einfügemodus
[i] |
insert |
[a] |
append |
[R] |
Replace - Ersetzenmodus |
[u] |
Undo - letzte Änderung rückgängig |
[Strg]+[r] |
Redo - letzte Änderung wieder herstellen |
- Visualmodus - Text markieren
[V] |
Zeilenweise |
[v] |
Zeichenweise |
[Strg]+[v] |
Blockweise |
[v][a][b] |
nächster ()-Block |
[v][a][B] |
nächster {}-Block |
Bedienung des Editors
Die Bedinung des VIM-Editors erfolgt hauptsächlich mit der Tastatur.
Navigieren im Kommandomodus
Im Kommandomodus kann der Cursor mit folgenden Tasten positioniert werden.
Taste(n) | Cursorsprung zu/nach |
---|---|
[g][g] |
oben in die erste Zeile |
[Shift]+[g] |
unten in die letzte Zeile |
[w] |
Wortanfang vorwärts |
[b] |
Wortanfang rückwärts |
[^] |
Zeilenanfang |
[$] |
Zeilenende |
[Strg]+[d] |
halbe Seite nach unten |
[Strg]+[u] |
halbe Seite nach oben |
[3][+] |
3 Zeilen vorwärts |
[5][+] |
5 Zeilen vorwärts |
[2][-] |
2 Zeilen rückwärts |
[Shift]+[k] |
Springt zur Hilfe am Wort |
Befehle im Kommandomodus (eine Auswahl)
Beispielhaft sind einige Befehle imm Kommandomodus aufgeführt.
Befehl | Beschreibung |
---|---|
:reg |
Register und Zwischenpuffer anzeigen |
:di |
Register und Zwischenpuffer anzeigen |
:pwd |
aktuelles Verzeichnis |
:f |
aktuellen Dateinamen anzeigen |
Statusinformationen ausgeben
Taste(n)/Befehl | Information |
---|---|
[Strg]+[g] |
vollen Pfad der Datei anzeigen |
[g][a] |
Detailinformation des Zeichens an der Cursorposition |
[g][Strg]+[g] |
Dateilinformation der Zeile an der Cursorposition |
Optionen setzten mit dem Befehl - set
Optionen werden im Kommandomodus [:]
gesetzt.
:set list " aktiviert eine Option
:set nolist " deaktiviert eine Option
:set list? " Abfragen der Option
:set all " Anzeigen aller Optionen
Beispieleinstellungen über die Funktion set
. Diese können auch direkt in .vimrc
gespeichert werden.
syntax on
set nocompatible " Verhalten für Cursortasten (Pfeiltasten) einstellen
set backspace=2 " Verhalten für Rücktaste und Entfernungstaste einstellen
set backspace=indent,eol,start " wie oben
set lines=40 columns=180 " Startgröße für Fenster, insbesondere Gvim
set lbr " Zeilenumbruch nach vollständigem Wort
set wrap " lange Zeilen umbrechen (ggf. über mehrere Zeilen)
set cursorline " Cursorzeile hervorheben
set hlsearch " Suchbegriff hervorheben
set number " Zeilennummerierung einschalten
set incsearch " Markiert sofort das Suchwort
set tabstop=4 " Breite eines Tabulatorstops
set expandtab " Setzt Leerzeichen anstelle des Tabulatorzeichens
retab " In Verbindung mit expandtab werden vorhanden Tabulatorzeichen in Leerzeichen umgewandelt
set list " anzeigen von Tabulator (^I) und Zeilenende ($) im Text
set nolist " deaktiviert das Anzeigen von Tabulatoren und Zeilenende im Text
set ruler " Cursorposition in Statuszeile anzeigen
Zum deaktivieren wird einfach das Prefix no
vorangesetzt.
set nohlsearch " Suchbegriff-Highlight deaktivieren
set nonumber " Zeilennummerierung abschalten
set noexpandtab " Setzt Tabulatorzeichen anstelle der Leerzeichen
Suchen und ersetzen
Die Such- und Ersetzungsfunktion erfolgt im Kommandomodus [:]
. Dabei können reguläre Ausdrücke
verwendet werden.
:1,$s/ \+/ /gc //Suchen nach doppelten Leerzeichen von der 1 Zeile bis zur letzten ($) und ersetze mit einem Leerzeichen.
:1,$s/$/;/gc //fügt vor dem Zeilenende ($) ein Semikolon ein
:1,$s/ab/a\rb/gc //Zeilenumbruch (\r) einfügen zwischen a und b
:5,9s/a\c/XX/gc //Suchen zwischen den Zeilen 5 und 9 nach Buchstaben a oder A (Option \c) und ersetze in XX.
:s/[a-z]/\U&\e/gc //wandelt Klein- in Großbuchstaben
:s/\([a-z]\+\)/\U&\e/gc //Ganze Wörter in Großbuchstaben umwandeln
Und hier mal der Link zu spektakulären und umfangreichen regulären Ausdrücken in VIM.
Suchmuster gruppieren
Die Zeichen \( \)
gruppieren ein Suchmuster. Die Gruppe wird im Ersetzungsteil als \1
bzw. bei mehreren Gruppen als fortlaufende Nummer referenziert.
# Sucht alle zweistelligen Zahlen und fügt die Zeichen zzz davor und dahinter
:1,$s/\([0-9][0-9]\)/zzz\1zzz/gc
Beispiel:
33 -> zzz33zzz
45 -> zzz45zzz
# Syntax mit 2 Gruppen, Beispiel Uhrzeitangaben
:1,$s/\([0-9][0-9]\)\:\([0-9][0-9]\)/zzz\1\:\2zzz/gc
Beispiel:
15:03 -> zzz15:03zzz
20:40 -> zzz20:40zzz
# Beispiel Datum in einer Gruppe
:1,$s/\([0-9][0-9]\.[0-9][0-9]\.2023\)/oo\1\oo/gc
Beispiel:
01.03.2023 -> oo01.03.2023oo
27.12.2023 -> oo27.12.2023oo
Andere Syntaxdateien verwenden
Speichere deine Syntaxdatei z.B. markdown2.vim
im Verzeichnis: C:\users\<name>\vimfiles\syntax
und setze den Namen der Syntaxdatei im Befehlsmodus von VIM.
set syn=markdown2
set syn
Zeichensatz - Formatierung und Kodierung
Zeichensatzformatierung und -kodierung sind immer ein heikles Thema in Textdateien, auf einer Terminalkonsole oder im Betriebssystem. VIM unterstützt eine ganze Reihe von Zeichenkodierungen
. Die wichtigsten sind: utf-8
und latin1
" Zeichensatzkodierung in VIM
set encoding=utf-8 " Zeichensatzkodierung auf utf-8
set encoding=latin1 " Zeichensatzkodierung auf latin1 entspricht ANSI
" Zeichensatzkodierung der geöffneten Datei
set fileencoding " zeigt die aktuelle Dateikodierung an
" Zeichensatzformatierung der Datei
set fileformat " zeigt die aktuelle Zeichensatzformatierung (dos, unix, mac)
set fileformat=unix " Stellt das Zeichensatzformat der Datei auf Unix um, es wird ein <LF> an das Zeilenende gehängt.
set fileformat=dos " Stellt das Zeichensatzformat der Datei auf Dos um, es wird ein <CR><LF> an das Zeilenende gehängt.
" <LF> = Linefeed (Zeilenvorschub), bewegt den Cursor nach unten.
" Symbol: [Ctrl-J] oder [^J] oder hex 0A
" <CR> = Carriage Return (Wagenrücklauf), bewegt den Cursor auf die linke Ecke.
" Symbol: [Ctrl-M] oder [^M] oder hex 0D
set encoding=utf-8
set fileencoding=latin1
set fileformat=unix
Hinweis: Um auf der DOS-Kommandokonsole die Zeichensatztabelle anzupassen, siehe Codepages.
Umschalten auf Hexadezimal Code
:%!xxd - Umschalten auf Hexadezimalcode
:%!xxd -r - Zurück auf Text
ASCII | Hexacode | Escape | Beschreibung |
---|---|---|---|
0d | \r | CR - Wagenrücklauf (carriage return) | |
0a | \n | LF - Zeilenvorschub (line feed) | |
09 | \t | Horizontaler Tabulator | |
a | 61 | Buchstabe a | |
b | 62 | Buchstabe b |
Vimdiff
Mit Vimdiff werden Unterschiede zweier Dateien angezeigt.
vim -d datei.1 datei.2
vimdiff datei.1 datei.2
Ist der Editor bereits mit einer Datei geöffnet, dann kann mit folgendem Kommando eine zweite Datei hinzugezogen werden.
:vertical diffsplit datei.2
Zum navigieren zwischen den Änderungen werden folgende Tastenkombinationen verwendet.
]c |
Springt nach unten zur nächsten Änderung. Wobei mit der Tastenkombination [Alt GR] + [9] die schließende Klammer erreicht wird. |
[c |
Springt nach oben zur vorhergehenden Änderung. Wobei mit der Tastenkombination [Alt GR] + [8] die öffnende Klammer erreicht wird. |
Um das umständliche Agieren mit der Tastatur zu vereinfachen, wird die Tastenkombination in den Funktionstasten F5
und F6
verlegt.
Entweder während des Betriebs im Kommandomodus …
:map <F5> ]c
:map <F6> [c
… oder als Eintrag in ~/.vimrc
map <F5> ]c
map <F6> [c