Terminal Mac: iTerm2 vs WezTerm vs Ghostty + zsh + Starship
Tres opciones para reemplazar Terminal.app predeterminada, más la ruta más rápida a un entorno estable de zsh + Starship.
La Terminal.app integrada de macOS funciona, pero se queda atrás en divisiones de paneles, búsqueda, renderizado y configurabilidad. Esta guía compara iTerm2 · WezTerm · Ghostty y traza la ruta más rápida hacia un entorno estable (WezTerm + zsh + Starship + cuatro módulos).
TL;DR
| Opción | Fortalezas | Debilidades | Mejor para |
|---|---|---|---|
| WezTerm (recomendado) | Configuración en Lua / aceleración GPU / multiplataforma | Curva de aprendizaje de Lua | Devs en solitario que prefieren configuraciones como código |
| iTerm2 | El más maduro / búsqueda/división/sesiones potentes | Laberinto de GUI de configuración | Prioriza la riqueza de características |
| Ghostty | Rápido / simple / 1.0 estable | Más nuevo, algunas características faltan | Minimalistas / primeros en adoptar |
1. Opciones comparadas
iTerm2
El terminal macOS más antiguo. Divisiones (⌘D), repetición instantánea, búsqueda, disparadores (acciones por coincidencia de texto), restauración automática de sesión — conjunto de características rico.
WezTerm
Escrito en Rust, configurado en Lua, acelerado por GPU, multiplataforma (Mac/Linux/Win). Atajos de teclado, temas, multiplexación — todo en un archivo Lua. Reproducible.
Ghostty
1.0 estable en 2024. Rápido, acelerado por GPU, configuración mínima. Menos características que iTerm2/WezTerm pero suficiente para uso diario.
Recomendación: WezTerm
Para el escenario «gestionar configuración como código y restaurarla en una máquina nueva con un solo comando», WezTerm gana de forma clara. Se integra de forma natural con la gestión de dotfiles. Esta guía se basa en WezTerm.
2. Instalar WezTerm
brew install --cask weztermPrimer lanzamiento → el shell predeterminado es zsh (predeterminado de macOS). Si la pantalla se renderiza, todo está bien.
3. Configuración de WezTerm — ~/.config/wezterm/wezterm.lua
mkdir -p ~/.config/wezterm && nvim ~/.config/wezterm/wezterm.lua:
local wezterm = require 'wezterm'
local config = wezterm.config_builder()
-- Fuentes
config.font = wezterm.font_with_fallback({
'JetBrainsMono Nerd Font',
'Hiragino Sans', -- respaldo para coreano / japonés
})
config.font_size = 13.0
-- Esquema de colores
config.color_scheme = 'Catppuccin Mocha' -- o 'Tokyo Night', 'Dracula'
-- Ventana
config.window_decorations = 'RESIZE' -- ocultar barra de título, mantener redimensionable
config.window_padding = { left = 8, right = 8, top = 8, bottom = 8 }
config.window_background_opacity = 0.95
config.macos_window_background_blur = 20
-- Pestañas
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 (más nuevo que el predeterminado de macOS)
-- Atajos de teclado
config.keys = {
-- Divisiones
{ key = 'd', mods = 'CMD', action = wezterm.action.SplitHorizontal { domain = 'CurrentPaneDomain' } },
{ key = 'D', mods = 'CMD|SHIFT', action = wezterm.action.SplitVertical { domain = 'CurrentPaneDomain' } },
-- Navegación de paneles
{ 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' },
-- Cerrar panel
{ key = 'w', mods = 'CMD', action = wezterm.action.CloseCurrentPane { confirm = true } },
}
return configWezTerm recarga automáticamente al guardar. Prueba ⌘D para confirmar que las divisiones funcionan.
4. Actualizar zsh
macOS trae un zsh más antiguo. brew tiene uno más nuevo:
brew install zsh
which -a zsh
# /opt/homebrew/bin/zsh
# /bin/zsh
# Cambiar el shell predeterminado
sudo sh -c "echo /opt/homebrew/bin/zsh >> /etc/shells"
chsh -s /opt/homebrew/bin/zshNuevo terminal → echo $ZSH_VERSION → 5.9+ confirma.
5. Prompt de Starship
Más ligero y rápido que oh-my-zsh. Binario único escrito en Rust:
brew install starshipAñade al final de ~/.zshrc:
eval "$(starship init zsh)"~/.config/starship.toml:
# Activación rápida predeterminada
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 # solo mostrar para comandos de más de 2 segundos
[character]
success_symbol = "[➜](bold green)"
error_symbol = "[➜](bold red)"Recarga con . ~/.zshrc o abre un nuevo terminal.
6. Cuatro módulos de zsh
6.1 zsh-autosuggestions
Sugerencias grises basadas en el historial:
brew install zsh-autosuggestions~/.zshrc:
source /opt/homebrew/share/zsh-autosuggestions/zsh-autosuggestions.zshAcepta con →.
6.2 zsh-syntax-highlighting
Colorea comandos (inválido = rojo):
brew install zsh-syntax-highlightingsource /opt/homebrew/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh⚠️ Fuente de syntax-highlighting al final de
.zshrcpara comportamiento correcto.
6.3 fzf — buscador fuzzy
brew install fzf
$(brew --prefix)/opt/fzf/install
# sí a todos los promptsEn un nuevo terminal:
Ctrl+R— búsqueda en historialCtrl+T— búsqueda de archivosAlt+C— salto a directorio
6.4 zoxide — cd más inteligente
brew install zoxide~/.zshrc:
eval "$(zoxide init zsh)"z proj # salta a una ruta de proyecto visitada frecuentemente
zi # selector interactivo7. Ejemplo completo de .zshrc
# Historial
HISTFILE=~/.zsh_history
HISTSIZE=10000
SAVEHIST=10000
setopt SHARE_HISTORY HIST_IGNORE_DUPS HIST_IGNORE_SPACE
# Completado
autoload -Uz compinit && compinit
# Brew
eval "$(/opt/homebrew/bin/brew shellenv)"
# Módulos
source /opt/homebrew/share/zsh-autosuggestions/zsh-autosuggestions.zsh
eval "$(zoxide init zsh)"
# Alias
alias ll='ls -lah'
alias gs='git status -sb'
alias gd='git diff'
alias ..='cd ..'
# Herramientas
eval "$(starship init zsh)"
# (Debe ir al final)
source /opt/homebrew/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh8. Configuración rápida de iTerm2 (alternativa)
Si prefieres iTerm2 sobre WezTerm:
brew install --cask iterm2- Preferencias → Perfiles → Default → Texto → Fuente = JetBrainsMono Nerd Font 13pt
- Ventana → Transparencia 5%, Desenfoque activado
- Teclas → Ventana de tecla de acceso — vincula un atajo global como
⌥ Spacepara flotante
La característica estrella de iTerm2 es la ventana de tecla de acceso (terminal flotante accesible desde cualquier lugar). WezTerm se puede configurar para un comportamiento similar, pero iTerm2 lo incluye de fábrica.
Verificación
- Nuevo terminal → el prompt de Starship aparece (con ruta coloreada / rama de git)
Ctrl+R→ búsqueda de historial interactiva con fzfls→ zsh-syntax-highlighting colorea el comando- Escribe parte de un comando anterior → sugerencia gris → presiona
→ z proj→ salta a una carpeta de proyecto visitada anteriormente- WezTerm
⌘D→ panel dividido →⌘⌥←para navegar
Solución de problemas
El syntax highlighting no muestra color
- No se cargó al final de
.zshrc(debe ir después de los demás módulos). - El esquema de colores de WezTerm tiene menos de 256 colores: poco probable, pero prefiere Catppuccin o Tokyo Night.
Glifos deformados en Starship
Falta la Nerd Font. Comprueba la configuración de fuente de WezTerm e instala la fuente (brew install --cask font-jetbrains-mono-nerd-font).
z no hace nada
- Falta la inicialización de zoxide en
.zshrc, o no se ha recargado. - La base de datos está vacía al principio: haz varios
cdpara entrenarla.
WezTerm abre en $HOME por defecto
Establece en la configuración: config.default_cwd = wezterm.home_dir .. '/work', o crea un alias que cambie a tu carpeta.
chsh no cambió el shell
- El nuevo shell no se añadió a
/etc/shellsy chsh falla. - Cierra sesión y vuelve a iniciarla, o reinicia.
Referencias
- Configuración inicial de Mac — prerequisitos de Homebrew
- Gestión de dotfiles — recomendamos almacenar
.zshrc,wezterm.lua,starship.tomlen chezmoi - WezTerm (oficial)
- Configuración de Starship
- iTerm2
- Ghostty
Historial de cambios
- 2026-05-12: Primera versión. Tres terminales comparadas + WezTerm + zsh + Starship + cuatro módulos + cinco casos de solución de problemas.