Cómo Configurar Starship Prompt con Fish Shell
Guía paso a paso para instalar y configurar Starship prompt en Fish Shell, con temas preconfigurados, módulos personalizados y configuración de Nerd Fonts.
Starship es un prompt multi-shell escrito en Rust. Funciona con Fish, Zsh, Bash, PowerShell y otros, así que puedes usar la misma configuración de prompt sin importar en qué shell estés. Lo he estado usando con Fish Shell y se complementan bien. Starship es rápido, la configuración es un solo archivo TOML, y te muestra la información que realmente necesitas (rama de git, versiones de lenguajes, duración del comando) sin saturar el prompt.
Anteriormente escribí una guía sobre Starship con Ghostty y Zsh. La configuración con Fish sigue los mismos principios, pero la línea de inicialización va en un archivo de configuración diferente.
Requisitos previos
Necesitas tener Fish Shell instalado. Si aún no lo tienes, sigue mi guía de instalación de Fish Shell para Ubuntu.
También necesitas una Nerd Font. Starship usa glifos especiales para los iconos, y sin una Nerd Font aparecen como cuadros rotos.
Instalar una Nerd Font
Recomiendo MesloLGS Nerd Font. En Ubuntu:
# Descargar e instalar
mkdir -p ~/.local/share/fonts
cd ~/.local/share/fonts
curl -fLO https://github.com/ryanoasis/nerd-fonts/releases/latest/download/Meslo.tar.xz
tar -xf Meslo.tar.xz
fc-cache -fv
En macOS con Homebrew:
brew install font-meslo-lg-nerd-font
Después de instalarla, configura la fuente en los ajustes de tu emulador de terminal. En Ghostty, agrega esto a tu configuración:
font-family = MesloLGS Nerd Font
Para otros terminales (WezTerm, Alacritty, kitty, etc.), consulta su documentación para la opción de configuración de fuentes.
Instalar Starship
El método de instalación recomendado:
curl -sS https://starship.rs/install.sh | sh
O usa un gestor de paquetes:
# Ubuntu/Debian (via snap)
snap install starship
# macOS
brew install starship
# Cargo
cargo install starship --locked
Verificar:
starship --version
Agregar Starship a Fish
Agrega una línea a tu configuración de Fish:
# ~/.config/fish/config.fish
starship init fish | source
Eso es todo. Abre una nueva terminal o ejecuta source ~/.config/fish/config.fish y deberías ver el prompt de Starship.
El orden importa
Coloca la línea starship init fish | source al final de tu config.fish, después de cualquier otra configuración. Esto asegura que Starship cargue de último y pueda configurar el prompt correctamente.
Elegir un preset
Starship incluye varios presets que cambian la apariencia de tu prompt. Puedes verlos en starship.rs/presets.
Aplicar un preset:
starship preset tokyo-night -o ~/.config/starship.toml
Presets populares:
- Tokyo Night — tema oscuro con tonos púrpura/azul
- Catppuccin — tema con colores pastel, varias variantes (Mocha, Macchiato, Latte)
- Nerd Font Symbols — reemplaza etiquetas de texto con iconos de Nerd Font
- Bracketed Segments — envuelve cada módulo entre corchetes
- Plain Text — sin caracteres especiales, funciona sin Nerd Fonts
Prueba varios. El comando de preset sobrescribe tu starship.toml, así que haz una copia de seguridad de cualquier configuración personalizada antes.
Configurar Starship
Starship lee su configuración de ~/.config/starship.toml. Si el archivo no existe, Starship usa valores por defecto razonables.
Esta es una configuración práctica que muestra información relevante sin saturar:
# ~/.config/starship.toml
# Configuración general
format = """
$directory\
$git_branch\
$git_status\
$nodejs\
$python\
$rust\
$golang\
$docker_context\
$cmd_duration\
$line_break\
$character"""
# No agregar línea en blanco entre prompts
add_newline = false
[directory]
truncation_length = 3
truncate_to_repo = true
[git_branch]
format = "[$symbol$branch]($style) "
symbol = " "
[git_status]
format = '([$all_status$ahead_behind]($style) )'
[nodejs]
format = "[$symbol($version)]($style) "
symbol = " "
[python]
format = "[$symbol($version)]($style) "
symbol = " "
[rust]
format = "[$symbol($version)]($style) "
symbol = " "
[golang]
format = "[$symbol($version)]($style) "
symbol = " "
[docker_context]
format = "[$symbol$context]($style) "
symbol = " "
[cmd_duration]
min_time = 2_000
format = "[$duration]($style) "
[character]
success_symbol = "[❯](green)"
error_symbol = "[❯](red)"
Qué hace cada sección
format controla qué módulos aparecen y en qué orden. Solo se muestran los módulos listados aquí.
directory muestra la ruta actual. truncation_length = 3 significa que ves como máximo 3 directorios padre. truncate_to_repo = true muestra la ruta completa desde la raíz del repositorio git.
git_branch y git_status muestran el nombre de tu rama y si tienes cambios sin confirmar, conteos de adelante/atrás, etc.
Módulos de lenguajes (nodejs, python, rust, golang) solo aparecen cuando estás en un proyecto que usa ese lenguaje. Lo detectan buscando archivos como package.json, pyproject.toml, Cargo.toml y similares.
cmd_duration muestra cuánto tardó el último comando, pero solo si tardó más de 2 segundos. Útil para detectar comandos lentos.
character muestra un ❯ verde en caso de éxito y un ❯ rojo después de un comando fallido.
Starship vs Tide
Si usas Fish, tienes dos buenas opciones de prompt:
| Starship | Tide | |
|---|---|---|
| Funciona con | Fish, Zsh, Bash, etc. | Solo Fish |
| Configuración | Archivo TOML | Asistente interactivo |
| Renderizado asíncrono | No (pero lo suficientemente rápido) | Sí |
| Instalación | Binario separado | Plugin de Fisher |
| Necesita Nerd Font | Sí (para la mayoría de presets) | Sí |
| Personalización | Editar starship.toml | tide configure + variables |
Elige Starship si usas múltiples shells y quieres una sola configuración de prompt, o si prefieres editar un archivo de configuración directamente.
Elige Tide si solo usas Fish y quieres renderizado asíncrono con una configuración basada en asistente. Instala Tide con Fisher:
fisher install IlanCosman/tide@v6
tide configure
Hablo de Tide y otras herramientas de Fish en los mejores plugins y herramientas para Fish Shell. Para una comparación completa de todas las opciones de prompt para Fish incluyendo Tide, Pure e Hydro, consulta mi guía de temas y prompts de Fish Shell.
Ambas son buenas opciones. Yo uso Starship porque a veces trabajo con Zsh o Bash en otras máquinas y quiero el mismo prompt en todas partes.
Configuración avanzada
Prompt del lado derecho
Starship soporta un prompt derecho que aparece en el borde derecho de tu terminal:
# En starship.toml
right_format = """$time"""
[time]
disabled = false
format = "[$time]($style)"
time_format = "%H:%M"Esto muestra la hora actual en el lado derecho. El soporte de prompt derecho de Fish funciona bien con esto.
Módulos personalizados
Puedes definir módulos personalizados que ejecutan comandos de shell:
[custom.fish_version]
command = "fish --version | string split ' ' | tail -1"
when = "true"
format = "[fish $output]($style) "
style = "cyan"Esto mostraría tu versión de Fish en el prompt. Útil para depuración o para mostrar información específica del proyecto.
Configuración por directorio
Starship no tiene configuración por directorio, pero puedes lograr algo similar con el sistema conf.d de Fish. Crea una función que establezca STARSHIP_CONFIG según el directorio actual:
# ~/.config/fish/conf.d/starship-dir.fish
function __check_starship_config --on-variable PWD
if test -f .starship.toml
set -gx STARSHIP_CONFIG (pwd)/.starship.toml
else
set -e STARSHIP_CONFIG
end
endAhora cualquier directorio con un archivo .starship.toml usará esa configuración en lugar de la global.
Solución de problemas
Los iconos aparecen como cuadros o signos de interrogación. Necesitas una Nerd Font instalada y seleccionada en tu terminal. Revisa la sección de requisitos previos más arriba.
El prompt va lento. Starship generalmente es rápido, pero algunos módulos (particularmente git status en repositorios muy grandes) pueden ser lentos. Desactívalos:
[git_status]
disabled = true
Starship no carga. Asegúrate de que starship init fish | source esté en tu config.fish y que starship esté en tu $PATH. Ejecuta which starship para verificar.
Lectura adicional
- Fish Shell vs Bash vs Zsh — comparación completa de shells
- Fish Shell vs Zsh — comparación enfocada
- Instalar Fish Shell en Ubuntu — cómo instalar Fish
- Fish Shell en macOS — instalar y configurar Fish en Mac
- Mejores plugins y herramientas para Fish Shell — Fisher, Tide, fzf.fish y más
- Abreviaturas vs alias en Fish Shell — expansión de texto en Fish
- Temas y prompts de Fish Shell — comparación de Tide, Starship, Pure e Hydro
- Resaltado de sintaxis en Fish Shell — cómo Fish resalta tus comandos
- Autocompletado y sugerencias en Fish Shell — el sistema de completado de Fish
- Guía de configuración de Starship y Ghostty — si también quieres un emulador de terminal moderno
- Guía de Ghostty Terminal — configuración completa de Ghostty