Vim ist der Standard-Texteditor auf Linux-Servern. Er ist auf praktisch jedem System vorinstalliert und ermöglicht schnelle Textbearbeitung direkt im Terminal.

Vim starten

# Datei öffnen
vim datei.txt

# Mehrere Dateien
vim datei1.txt datei2.txt

# An bestimmter Zeile starten
vim +100 datei.txt

# Read-only
vim -R datei.txt
view datei.txt

Modi

Vim arbeitet mit verschiedenen Modi:

ModusZweckAktivieren
NormalNavigation, BefehleEsc
InsertText eingebeni, a, o
VisualText markierenv, V, Ctrl+v
CommandBefehle eingeben:

Beenden

:q          - Beenden
:q!         - Beenden ohne Speichern
:w          - Speichern
:wq         - Speichern und Beenden
:x          - Speichern und Beenden
ZZ          - Speichern und Beenden (Normal-Modus)
ZQ          - Beenden ohne Speichern (Normal-Modus)

Basis-Bewegungen

TasteBewegung
hLinks
jRunter
kHoch
lRechts
wNächstes Wort
bVorheriges Wort
eWortende
0Zeilenanfang
$Zeilenende
^Erstes Zeichen der Zeile

Erweiterte Navigation

TasteBewegung
ggDateianfang
GDateiende
100GZu Zeile 100
{Absatz hoch
}Absatz runter
Ctrl+fSeite vorwärts
Ctrl+bSeite rückwärts
Ctrl+dHalbe Seite runter
Ctrl+uHalbe Seite hoch
%Zur passenden Klammer

Insert-Modus

TasteAktion
iVor Cursor einfügen
aNach Cursor einfügen
IAm Zeilenanfang einfügen
AAm Zeilenende einfügen
oNeue Zeile darunter
ONeue Zeile darüber
EscZurück zum Normal-Modus

Bearbeiten (Normal-Modus)

Löschen

BefehlAktion
xZeichen löschen
dwWort löschen
ddZeile löschen
d$Bis Zeilenende löschen
d0Bis Zeilenanfang löschen
dGBis Dateiende löschen
5dd5 Zeilen löschen

Kopieren und Einfügen

BefehlAktion
yyZeile kopieren (yank)
ywWort kopieren
y$Bis Zeilenende kopieren
5yy5 Zeilen kopieren
pNach Cursor einfügen
PVor Cursor einfügen

Ändern

BefehlAktion
cwWort ändern
ccZeile ändern
c$Bis Zeilenende ändern
rEinzelnes Zeichen ersetzen
RReplace-Modus
~Groß-/Kleinschreibung wechseln

Rückgängig

BefehlAktion
uRückgängig (Undo)
Ctrl+rWiederholen (Redo)
.Letzten Befehl wiederholen

Visual-Modus

v       - Zeichen markieren
V       - Zeilen markieren
Ctrl+v  - Block markieren

Nach Markierung:
d       - Löschen
y       - Kopieren
c       - Ändern
>       - Einrücken
<       - Ausrücken

Suchen und Ersetzen

Suchen

/suchbegriff    - Vorwärts suchen
?suchbegriff    - Rückwärts suchen
n               - Nächster Treffer
N               - Vorheriger Treffer
*               - Wort unter Cursor suchen

Ersetzen

:s/alt/neu/           - Erstes in Zeile ersetzen
:s/alt/neu/g          - Alle in Zeile ersetzen
:%s/alt/neu/g         - Alle in Datei ersetzen
:%s/alt/neu/gc        - Mit Bestätigung
:5,10s/alt/neu/g      - In Zeilen 5-10

Regex-Beispiele

" Zeilenenden von Windows zu Unix
:%s/\r//g

" Leerzeilen entfernen
:g/^$/d

" Mehrfache Leerzeichen zu einem
:%s/  \+/ /g

" HTML-Tags entfernen
:%s/<[^>]*>//g

Mehrere Dateien

Buffer

:e datei.txt          - Datei öffnen
:bn                   - Nächster Buffer
:bp                   - Vorheriger Buffer
:bd                   - Buffer schließen
:ls                   - Buffer auflisten
:b3                   - Zu Buffer 3 wechseln

Tabs

:tabnew datei.txt     - Neuer Tab
:tabn                 - Nächster Tab
:tabp                 - Vorheriger Tab
:tabclose             - Tab schließen
gt                    - Nächster Tab
gT                    - Vorheriger Tab

Splits

:split datei.txt      - Horizontaler Split
:vsplit datei.txt     - Vertikaler Split
Ctrl+w h/j/k/l        - Zwischen Splits wechseln
Ctrl+w +/-            - Größe ändern
Ctrl+w =              - Größe angleichen
Ctrl+w q              - Split schließen

Konfiguration

~/.vimrc

" Grundeinstellungen
set nocompatible
syntax on
filetype plugin indent on

" Zeilennummern
set number
set relativenumber

" Suche
set hlsearch
set incsearch
set ignorecase
set smartcase

" Einrückung
set expandtab
set tabstop=4
set shiftwidth=4
set autoindent
set smartindent

" UI
set showcmd
set showmode
set ruler
set wildmenu
set laststatus=2

" Encoding
set encoding=utf-8

" Keine Backup-Dateien
set nobackup
set noswapfile

" Maus
set mouse=a

" Farben
colorscheme desert
set background=dark

" Tasten-Mappings
let mapleader = ","
nnoremap <leader>w :w<CR>
nnoremap <leader>q :q<CR>
nnoremap <C-n> :bn<CR>
nnoremap <C-p> :bp<CR>

" Schnelles Escape
inoremap jj <Esc>

" Clipboard
set clipboard=unnamedplus

Nützliche Befehle

Informationen

:set                  - Gesetzte Optionen
:set all              - Alle Optionen
Ctrl+g                - Datei-Info
g Ctrl+g              - Position in Datei

Ausführen

:!ls                  - Shell-Befehl ausführen
:r !date              - Ausgabe einfügen
:r datei.txt          - Datei einfügen

Formatierung

gg=G                  - Ganze Datei einrücken
=                     - Markierung einrücken
gq                    - Text umbrechen

Makros

qa                    - Makro a aufnehmen
q                     - Aufnahme beenden
@a                    - Makro a ausführen
@@                    - Letztes Makro wiederholen
5@a                   - Makro 5x ausführen

Server-Administration

Häufige Aufgaben

" Config-Datei bearbeiten
vim /etc/nginx/nginx.conf

" Suchen in Logs
vim +/ERROR /var/log/syslog

" Mehrere Dateien durchsuchen
:vimgrep /pattern/ **/*.conf
:copen

" Sudo speichern (wenn vergessen)
:w !sudo tee %

Schnelle Fixes

" Zeile duplizieren
yyp

" Zeilen tauschen
ddp

" Wort unter Cursor groß
gUiw

" Gesamte Datei einrücken
gg=G

Zusammenfassung

ModusAktivierung
NormalEsc
Inserti, a, o
Visualv, V
Command:
BefehlAktion
:wSpeichern
:qBeenden
:wqSpeichern + Beenden
ddZeile löschen
yyZeile kopieren
pEinfügen
uUndo
/textSuchen
DateiFunktion
~/.vimrcKonfiguration
~/.vim/Plugins etc.

Fazit

Vim erfordert eine Eingewöhnungsphase, lohnt sich aber für jeden Administrator. Die modale Bearbeitung ermöglicht effizientes Arbeiten ohne Maus. Mit einer guten .vimrc wird Vim komfortabel. Die Tastenkombinationen funktionieren systemweit. Vim ist auf jedem Server verfügbar - ein einmal erlerntes Tool für immer.