---
title: "Cómo Configurar Starship Prompt con Fish Shell"
description: "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."
date: 2026-02-19
categories: ["vps"]
tags: ["fish-shell"]
---

import Notice from "@components/widgets/Notice.astro";
import Accordion from "@components/widgets/Accordion.astro";

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](/starship-ghostty-terminal/). 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](/es/instalar-fish-shell-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:

```bash
# 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:

```bash
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](/install-wezterm-mac/), 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:

```bash
curl -sS https://starship.rs/install.sh | sh
```

O usa un gestor de paquetes:

```bash
# Ubuntu/Debian (via snap)
snap install starship

# macOS
brew install starship

# Cargo
cargo install starship --locked
```

Verificar:

```bash
starship --version
```

## Agregar Starship a Fish

Agrega una línea a tu configuración de Fish:

```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.

<Notice type="info" title="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.
</Notice>

## Elegir un preset

Starship incluye varios presets que cambian la apariencia de tu prompt. Puedes verlos en [starship.rs/presets](https://starship.rs/presets/).

Aplicar un preset:

```bash
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:

```toml
# ~/.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:

```fish
fisher install IlanCosman/tide@v6
tide configure
```

Hablo de Tide y otras herramientas de Fish en [los mejores plugins y herramientas para Fish Shell](/es/mejores-plugins-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](/es/fish-shell-temas-prompts/).

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

<Accordion label="Prompt del lado derecho" group="advanced" expanded="true">
Starship soporta un prompt derecho que aparece en el borde derecho de tu terminal:

```toml
# 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.
</Accordion>

<Accordion label="Módulos personalizados" group="advanced">
Puedes definir módulos personalizados que ejecutan comandos de shell:

```toml
[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.
</Accordion>

<Accordion label="Configuración por directorio" group="advanced">
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:

```fish
# ~/.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
end
```

Ahora cualquier directorio con un archivo `.starship.toml` usará esa configuración en lugar de la global.
</Accordion>

## 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:

```toml
[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](/es/fish-shell-vs-bash-vs-zsh-comparacion/) — comparación completa de shells
- [Fish Shell vs Zsh](/es/fish-shell-vs-zsh-comparacion/) — comparación enfocada
- [Instalar Fish Shell en Ubuntu](/es/instalar-fish-shell-ubuntu/) — cómo instalar Fish
- [Fish Shell en macOS](/es/fish-shell-macos-configuracion/) — instalar y configurar Fish en Mac
- [Mejores plugins y herramientas para Fish Shell](/es/mejores-plugins-fish-shell/) — Fisher, Tide, fzf.fish y más
- [Abreviaturas vs alias en Fish Shell](/es/fish-shell-abreviaturas-vs-alias/) — expansión de texto en Fish
- [Temas y prompts de Fish Shell](/es/fish-shell-temas-prompts/) — comparación de Tide, Starship, Pure e Hydro
- [Resaltado de sintaxis en Fish Shell](/es/fish-shell-resaltado-sintaxis/) — cómo Fish resalta tus comandos
- [Autocompletado y sugerencias en Fish Shell](/es/fish-shell-autocompletado-sugerencias/) — el sistema de completado de Fish
- [Guía de configuración de Starship y Ghostty](/starship-ghostty-terminal/) — si también quieres un emulador de terminal moderno
- [Guía de Ghostty Terminal](/ghostty-terminal/) — configuración completa de Ghostty