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:

| Modus | Zweck | Aktivieren | |-------|-------|------------| | Normal | Navigation, Befehle | Esc | | Insert | Text eingeben | i, a, o | | Visual | Text markieren | v, V, Ctrl+v | | Command | Befehle 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

| Taste | Bewegung | |-------|----------| | h | Links | | j | Runter | | k | Hoch | | l | Rechts | | w | Nächstes Wort | | b | Vorheriges Wort | | e | Wortende | | 0 | Zeilenanfang | | $ | Zeilenende | | ^ | Erstes Zeichen der Zeile |

Erweiterte Navigation

| Taste | Bewegung | |-------|----------| | gg | Dateianfang | | G | Dateiende | | 100G | Zu Zeile 100 | | { | Absatz hoch | | } | Absatz runter | | Ctrl+f | Seite vorwärts | | Ctrl+b | Seite rückwärts | | Ctrl+d | Halbe Seite runter | | Ctrl+u | Halbe Seite hoch | | % | Zur passenden Klammer |

Insert-Modus

| Taste | Aktion | |-------|--------| | i | Vor Cursor einfügen | | a | Nach Cursor einfügen | | I | Am Zeilenanfang einfügen | | A | Am Zeilenende einfügen | | o | Neue Zeile darunter | | O | Neue Zeile darüber | | Esc | Zurück zum Normal-Modus |

Bearbeiten (Normal-Modus)

Löschen

| Befehl | Aktion | |--------|--------| | x | Zeichen löschen | | dw | Wort löschen | | dd | Zeile löschen | | d$ | Bis Zeilenende löschen | | d0 | Bis Zeilenanfang löschen | | dG | Bis Dateiende löschen | | 5dd | 5 Zeilen löschen |

Kopieren und Einfügen

| Befehl | Aktion | |--------|--------| | yy | Zeile kopieren (yank) | | yw | Wort kopieren | | y$ | Bis Zeilenende kopieren | | 5yy | 5 Zeilen kopieren | | p | Nach Cursor einfügen | | P | Vor Cursor einfügen |

Ändern

| Befehl | Aktion | |--------|--------| | cw | Wort ändern | | cc | Zeile ändern | | c$ | Bis Zeilenende ändern | | r | Einzelnes Zeichen ersetzen | | R | Replace-Modus | | ~ | Groß-/Kleinschreibung wechseln |

Rückgängig

| Befehl | Aktion | |--------|--------| | u | Rückgängig (Undo) | | Ctrl+r | Wiederholen (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

| Modus | Aktivierung | |-------|-------------| | Normal | Esc | | Insert | i, a, o | | Visual | v, V | | Command | : |

| Befehl | Aktion | |--------|--------| | :w | Speichern | | :q | Beenden | | :wq | Speichern + Beenden | | dd | Zeile löschen | | yy | Zeile kopieren | | p | Einfügen | | u | Undo | | /text | Suchen |

| Datei | Funktion | |-------|----------| | ~/.vimrc | Konfiguration | | ~/.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.