Mac-Terminal — iTerm2 vs. WezTerm vs. Ghostty + zsh + Starship
Drei Optionen zum Ersetzen des Standard-Terminal.app, plus der schnellste Weg zu einem stabilen zsh + Starship-Setup.
macOS' eingebautes Terminal.app funktioniert, fällt aber bei geteilten Fenstern, Suche, Rendering und Konfigurierbarkeit hinter den Alternativen zurück. Dieser Leitfaden vergleicht iTerm2 · WezTerm · Ghostty und zeigt den schnellsten Weg zu einer stabilen Umgebung (WezTerm + zsh + Starship + vier Module).
Ich glaube, was die Terminal-Wahl so dauerhaft ist, ist dass man täglich Dutzende Male damit interagiert — weil kleine Reibungen wie langsames Rendering oder fehlende Split-Pane-Navigation über Monate enorm aufaddieren, statt bedeutungslos zu bleiben. Anfangs war ich mit Terminal.app zufrieden; heute ist WezTerm mein Standard, da die Lua-Konfiguration bedeutet, dass meine gesamte Terminal-Einrichtung als Code in dotfiles lebt.
TL;DR
| Option | Stärken | Schwächen | Am besten für |
|---|---|---|---|
| WezTerm (empfohlen) | Lua-Konfig / GPU-Beschleunigung / plattformübergreifend | Lua-Lernkurve | Solo-Entwickler, die Konfigs als Code mögen |
| iTerm2 | Ausgereifteste / starke Suche/Splits/Sessions | GUI-Einstellungs-Labyrinth | Priorisiert Funktionsreichtum |
| Ghostty | Schnell / einfach / 1.0 stabil | Neuer, einige Funktionen fehlen | Minimalisten / Neuestes-zuerst |
1. Optionen im Vergleich
iTerm2
Das älteste macOS-exklusive Terminal. Splits (⌘D), Sofort-Replay, Suche, Trigger (Textübereinstimmungs-Aktionen), automatische Session-Wiederherstellung — umfangreicher Funktionsumfang.
WezTerm
In Rust geschrieben, in Lua konfiguriert, GPU-beschleunigt, plattformübergreifend (Mac/Linux/Win). Tastenbelegung, Themes, Multiplexing — alles in einer Lua-Datei, vollständig reproduzierbar.
Ghostty
1.0 stabil seit 2024. Schnell, GPU-beschleunigt, minimale Konfig. Weniger Funktionen als iTerm2/WezTerm, aber genug für den täglichen Gebrauch.
Empfehlung: WezTerm
Für „Konfiguration als Code verwalten und auf einem neuen Gerät in einem Schritt wiederherstellen" ist WezTerm die klare Wahl. Es integriert sich natürlich mit der dotfiles-Verwaltung. Dieser Leitfaden basiert auf WezTerm.
2. WezTerm installieren
brew install --cask weztermErster Start → Standard-Shell ist zsh (macOS-Standard). Wenn der Bildschirm korrekt rendert, ist alles in Ordnung.
3. WezTerm-Konfig — ~/.config/wezterm/wezterm.lua
mkdir -p ~/.config/wezterm && nvim ~/.config/wezterm/wezterm.lua:
local wezterm = require 'wezterm'
local config = wezterm.config_builder()
-- Schriften
config.font = wezterm.font_with_fallback({
'JetBrainsMono Nerd Font',
'Hiragino Sans', -- Koreanisch / Japanisch Fallback
})
config.font_size = 13.0
-- Farbschema
config.color_scheme = 'Catppuccin Mocha' -- oder 'Tokyo Night', 'Dracula'
-- Fenster
config.window_decorations = 'RESIZE' -- Titelleiste ausblenden, skalierbar behalten
config.window_padding = { left = 8, right = 8, top = 8, bottom = 8 }
config.window_background_opacity = 0.95
config.macos_window_background_blur = 20
-- Tabs
config.use_fancy_tab_bar = false
config.tab_bar_at_bottom = true
config.hide_tab_bar_if_only_one_tab = true
-- Shell
config.default_prog = { '/opt/homebrew/bin/zsh', '-l' } -- brew zsh (neuer als macOS-Standard)
-- Tastenbelegung
config.keys = {
-- Splits
{ key = 'd', mods = 'CMD', action = wezterm.action.SplitHorizontal { domain = 'CurrentPaneDomain' } },
{ key = 'D', mods = 'CMD|SHIFT', action = wezterm.action.SplitVertical { domain = 'CurrentPaneDomain' } },
-- Pane-Navigation
{ key = 'LeftArrow', mods = 'CMD|OPT', action = wezterm.action.ActivatePaneDirection 'Left' },
{ key = 'RightArrow', mods = 'CMD|OPT', action = wezterm.action.ActivatePaneDirection 'Right' },
{ key = 'UpArrow', mods = 'CMD|OPT', action = wezterm.action.ActivatePaneDirection 'Up' },
{ key = 'DownArrow', mods = 'CMD|OPT', action = wezterm.action.ActivatePaneDirection 'Down' },
-- Pane schließen
{ key = 'w', mods = 'CMD', action = wezterm.action.CloseCurrentPane { confirm = true } },
}
return configWezTerm lädt beim Speichern automatisch neu. ⌘D ausprobieren, um zu bestätigen, dass Splits funktionieren.
4. zsh upgraden
macOS wird mit einer älteren zsh-Version ausgeliefert. Homebrew stellt eine neuere bereit:
brew install zsh
which -a zsh
# /opt/homebrew/bin/zsh
# /bin/zsh
# Standard-Shell ändern
sudo sh -c "echo /opt/homebrew/bin/zsh >> /etc/shells"
chsh -s /opt/homebrew/bin/zshNeues Terminal → echo $ZSH_VERSION → 5.9+ bestätigt.
5. Starship-Prompt
Leichter und schneller als Oh My Zsh. Einzelne Rust-Binärdatei:
brew install starshipAn ~/.zshrc anhängen:
eval "$(starship init zsh)"~/.config/starship.toml:
# Schnelle Standard-Aktivierung
add_newline = true
format = """
$directory\
$git_branch\
$git_status\
$nodejs\
$python\
$rust\
$cmd_duration\
$line_break\
$character"""
[directory]
truncation_length = 3
truncate_to_repo = true
[git_status]
disabled = false
ahead = "↑${count} "
behind = "↓${count} "
[cmd_duration]
min_time = 2000 # nur bei Befehlen anzeigen, die unter 2 Sekunden dauern
[character]
success_symbol = "[➜](bold green)"
error_symbol = "[➜](bold red)"Mit . ~/.zshrc neu laden oder ein neues Terminal-Fenster öffnen.
6. Vier zsh-Module
6.1 zsh-autosuggestions
Verlaufsbasierter grauer Vorschlag:
brew install zsh-autosuggestions~/.zshrc:
source /opt/homebrew/share/zsh-autosuggestions/zsh-autosuggestions.zshMit → akzeptieren.
6.2 zsh-syntax-highlighting
Befehle einfärben (ungültig = rot):
brew install zsh-syntax-highlightingsource /opt/homebrew/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh⚠️ Syntax-Highlighting in
.zshrcals letztes einbinden für korrektes Verhalten.
6.3 fzf — Fuzzy-Finder
brew install fzf
$(brew --prefix)/opt/fzf/install
# Alle Prompts mit ja beantwortenIn einem neuen Terminal:
Ctrl+R— VerlaufssucheCtrl+T— DateisucheAlt+C— Verzeichniswechsel
6.4 zoxide — intelligenteres cd
brew install zoxide~/.zshrc:
eval "$(zoxide init zsh)"z proj # zu einem häufig besuchten Projektpfad springen
zi # interaktive Auswahl7. Vollständiges .zshrc-Beispiel
# Verlauf
HISTFILE=~/.zsh_history
HISTSIZE=10000
SAVEHIST=10000
setopt SHARE_HISTORY HIST_IGNORE_DUPS HIST_IGNORE_SPACE
# Vervollständigung
autoload -Uz compinit && compinit
# Brew
eval "$(/opt/homebrew/bin/brew shellenv)"
# Module
source /opt/homebrew/share/zsh-autosuggestions/zsh-autosuggestions.zsh
eval "$(zoxide init zsh)"
# Aliase
alias ll='ls -lah'
alias gs='git status -sb'
alias gd='git diff'
alias ..='cd ..'
# Tools
eval "$(starship init zsh)"
# (Muss als letztes kommen)
source /opt/homebrew/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh8. iTerm2 Schnell-Setup (Alternative)
Wenn du iTerm2 gegenüber WezTerm bevorzugst:
brew install --cask iterm2- Einstellungen → Profile → Standard → Text → Schrift = JetBrainsMono Nerd Font 13pt
- Fenster → Transparenz 5%, Weichzeichner ein
- Tasten → Hotkey-Fenster — globale Tastenkombination wie
⌥ Spacefür schwebend binden
iTerm2s Killer-Feature ist das Hotkey-Fenster — ein schwebendes Terminal, das von überall per Tastenkürzel aufrufbar ist. WezTerm kann ähnlich konfiguriert werden, iTerm2 liefert es aber sofort aus der Box.
Verifizierung
- Neues Terminal → Starship-Prompt erscheint (mit farbigem cwd / Git-Branch)
Ctrl+R→ fzf interaktive Verlaufssuchels→ zsh-syntax-highlighting färbt den Befehl ein- Teil eines vorherigen Befehls eingeben → grauer Auto-Vorschlag →
→drücken z proj→ zu einem zuvor besuchten Projektordner springen- WezTerm
⌘D→ geteilten Bereich →⌘⌥←zum Navigieren
Problembehandlung
Syntax-Highlighting zeigt keine Farbe
- Nicht als letztes in
.zshrceingebunden (muss nach allen anderen Modulen stehen) - WezTerm-Farbschema hat weniger als 256 Farben — unwahrscheinlich, aber Catppuccin / Tokyo Night bevorzugen
Verstümmelte Glyphen in Starship
Nerd Font fehlt. WezTerms Schrift-Konfiguration prüfen und die Schrift tatsächlich installieren (brew install --cask font-jetbrains-mono-nerd-font).
z tut nichts
- zoxide init fehlt in
.zshrc, oder.zshrcnicht neu geladen - Datenbank ist am Anfang leer — ein paar
cds machen, um sie zu trainieren
WezTerm öffnet standardmäßig $HOME
In der Konfig setzen: config.default_cwd = wezterm.home_dir .. '/work', oder cd in deinen Ordner aliasieren.
chsh hat die Shell nicht geändert
- Die neue Shell wurde nicht zu
/etc/shellshinzugefügt → chsh schlägt fehl - Ausloggen / wieder einloggen, oder neu starten
Referenzen
- Mac-Ersteinrichtung — Homebrew-Voraussetzungen
- dotfiles-Verwaltung — Empfehlung,
.zshrc,wezterm.lua,starship.tomlin chezmoi zu speichern - WezTerm (offiziell)
- Starship-Konfig
- iTerm2
- Ghostty
Changelog
- 2026-05-12: Erster Entwurf. Drei Terminals verglichen + WezTerm + zsh + Starship + vier Module + fünf Problembehandlungsfälle.