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.txtModi
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)Navigation (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ückenSuchen und Ersetzen
Suchen
/suchbegriff - Vorwärts suchen
?suchbegriff - Rückwärts suchen
n - Nächster Treffer
N - Vorheriger Treffer
* - Wort unter Cursor suchenErsetzen
: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-10Regex-Beispiele
" Zeilenenden von Windows zu Unix
:%s/\r//g
" Leerzeilen entfernen
:g/^$/d
" Mehrfache Leerzeichen zu einem
:%s/ \+/ /g
" HTML-Tags entfernen
:%s/<[^>]*>//gMehrere 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 wechselnTabs
:tabnew datei.txt - Neuer Tab
:tabn - Nächster Tab
:tabp - Vorheriger Tab
:tabclose - Tab schließen
gt - Nächster Tab
gT - Vorheriger TabSplits
: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ßenKonfiguration
~/.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=unnamedplusNützliche Befehle
Informationen
:set - Gesetzte Optionen
:set all - Alle Optionen
Ctrl+g - Datei-Info
g Ctrl+g - Position in DateiAusführen
:!ls - Shell-Befehl ausführen
:r !date - Ausgabe einfügen
:r datei.txt - Datei einfügenFormatierung
gg=G - Ganze Datei einrücken
= - Markierung einrücken
gq - Text umbrechenMakros
qa - Makro a aufnehmen
q - Aufnahme beenden
@a - Makro a ausführen
@@ - Letztes Makro wiederholen
5@a - Makro 5x ausführenServer-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=GZusammenfassung
| 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.