Configuraciones para la terminal Fish

Fish es una de las terminales más populares, pero es un poco difícil de configurar por eso mostraré algunas funciones y como hacerlo.

Configuraciones para la terminal Fish

En este artículo recopilo algunas configuraciones y funciones útiles de Fish para adaptar la terminal a mi flujo de trabajo.

Iré actualizando este post conforme vaya configurando nuevos comandos en mi workflow.

Configurar alias

Los alias son útiles para acceder rápidamente a un directorio en particular. Me ayudan mucho, ya que siempre necesito trabajar con mis proyectos en ese directorio y esta configuración me ahorra tiempo.

Primero crearemos el alias con el siguiente comando:

# es necesario cambiar {myuser} por tu usuario.
alias myprojects="cd /Users/{myuser}/Documents/projects/"

Luego debes configurar la función con este comando:

funcsave myprojects

Esto creará un nuevo archivo con la función en el directorio:

~/.config/fish/functions/myprojects.fish
function myprojects --wraps='cd /Users/{myuser}/Documents/projects/' --description 'alias myprojects=cd /Users/{myuser}/Documents/projects/'
cd /Users/{myuser}/Documents/projects/ $argv;
end

Ahora ejecutamos el comando myprojects, que nos redirigirá al directorio deseado.

# cd /Users/{myuser}/Documents/projects/
myprojects

Agregando PATHs

La variable PATH es una lista de directorios en los que el sistema busca los ejecutables cuando escribimos un comando. En Fish, esta variable se gestiona como una lista, por lo que no es necesario añadir los directorios separados por dos puntos (:).

# Añade permanentemente /usr/local/bin al PATH.
# La opción -U crea una variable universal.
set -U fish_user_paths /usr/local/bin $fish_user_paths

Los casos específicos que tuve fueron al configurar NVM y Flutter. NVM fue más difícil, pero Flutter lo pude resolver con este comando:

# Añade el directorio de Flutter al PATH.
set -U fish_user_paths $HOME/flutter/bin $fish_user_paths

Eliminando PATHs

Para poder eliminar algún PATH en específico, primero debemos listar los PATH registrados en Fish con el siguiente comando:

echo $fish_user_paths | tr "' "' "\'\n"' | nl

Y cuando tengas el ID del PATH que deseas eliminar, podemos ejecutar:

set --erase --universal fish_user_paths[1]

Agregando Yarn a la terminal Fish

Para poder agregar Yarn a mi terminal, necesité primero saber dónde estaba instalado Yarn y cuál era su directorio global con los siguientes comandos:

which yarn
#$HOME/.local/share/nvm/v22.14.0/bin/yarn
yarn global bin
# $HOME/.yarn/bin

Con los directorios localizados, podemos añadirlos al PATH. En Fish se agregan como elementos independientes de la lista:

set -U fish_user_paths $PATH:$HOME/.local/share/nvm/v22.14.0/bin/yarn $HOME/.yarn/bin $fish_user_paths

Configurar el archivo config.fish

Además de crear alias y variables universales, podemos guardar configuraciones generales en el archivo config.fish. Fish lo ejecuta cada vez que abrimos una nueva sesión.

El archivo se encuentra normalmente en:

~/.config/fish/config.fish

Podemos abrirlo con el editor que prefiramos. Por ejemplo:

nano ~/.config/fish/config.fish

Después de guardar los cambios, podemos aplicarlos sin cerrar la terminal:

source ~/.config/fish/config.fish

Una buena práctica es mantener en este archivo las configuraciones generales y utilizar archivos independientes dentro de ~/.config/fish/functions/ para las funciones más largas.

Usar abreviaturas en lugar de alias

Fish incluye abreviaturas, que se expanden mientras escribimos el comando. Son especialmente útiles para comandos largos y permiten revisar el texto antes de ejecutarlo:

abbr --add gco 'git checkout'
abbr --add gs 'git status'
abbr --add k 'kubectl'

Para consultar las abreviaciones existentes podemos ejecutar:

abbr --show

Las abreviaciones se guardan como variables universales, por lo que permanecen disponibles en las siguientes sesiones.

Crear funciones con argumentos

Cuando necesitamos algo más que un comando fijo, podemos crear una función. Por ejemplo, esta función crea un directorio y entra en él:

function mkcd
mkdir -p $argv[1]
cd $argv[1]
end

El contenido de $argv representa los argumentos recibidos por la función. Para conservarla después de cerrar la terminal, la guardamos con funcsave:

funcsave mkcd

También podemos crearla directamente en ~/.config/fish/functions/mkcd.fish. Fish cargará automáticamente la función cuando la necesitemos.

Mejorar el historial de comandos

Fish permite buscar comandos anteriores escribiendo una parte del texto y pulsando la flecha arriba. También podemos consultar el historial desde la terminal:

history search --contains docker

Para recuperar un comando encontrado, podemos pulsar la flecha arriba después de escribir parte del comando. La opción history merge tiene otra finalidad: incorpora al historial de la sesión actual los comandos guardados por otras sesiones abiertas.

El historial se guarda en ~/.local/share/fish/fish_history, aunque normalmente no es necesario editar este archivo manualmente.

Instalar plugins con Fisher

Fish puede ampliarse mediante plugins. Una de las herramientas más utilizadas para gestionarlos es Fisher. Podemos instalarla con:

curl -sL https://raw.githubusercontent.com/jorgebucaran/fisher/main/functions/fisher.fish | source
and fisher install jorgebucaran/fisher

Por ejemplo, para instalar un tema o un plugin, usamos fisher install seguido de la URL o el nombre del repositorio. Conviene revisar el código de cada plugin antes de instalarlo, especialmente si modifica el inicio de la shell.

Comprobar y depurar el PATH

Si un comando no se encuentra, podemos comprobar qué ejecutable está utilizando el sistema con type -a:

type -a node
type -a yarn

También podemos mostrar cada entrada del PATH en una línea independiente:

string split : $PATH

Si hemos añadido una ruta incorrecta, podemos eliminarla indicando su valor exacto:

fish_add_path --erase $HOME/.yarn/bin

fish_add_path es una alternativa práctica para añadir rutas. Por defecto evita duplicados y puede añadirlas de forma universal:

fish_add_path --universal $HOME/.yarn/bin

Restablecer la configuración

Si necesitamos empezar de nuevo, podemos eliminar una función guardada y una variable universal con estos comandos:

functions --erase myprojects
set --erase --universal fish_user_paths

La segunda instrucción elimina todas las rutas añadidas mediante fish_user_paths, así que debemos utilizarla con cuidado. Después podemos abrir una nueva sesión de Fish y volver a añadir únicamente los directorios necesarios.

Con estas configuraciones, Fish ofrece una terminal flexible y fácil de adaptar: podemos organizar las rutas, automatizar tareas frecuentes y mantener la configuración separada en archivos fáciles de consultar.

Share this article

Keep reading

Related articles

AWS

Novedades de AWS, Azure, GCP y OCI — 15 al 20 de septiembre de 2026

Descubre las novedades de AWS, Azure, Google Cloud y OCI del 15 al 20 de septiembre de 2026: Kubernetes, bases de datos, observabilidad, seguridad y networking.

DevOps

Kubernetes Troubleshooting: Health Checks, Readiness, Liveness y Startup Probes

Aprende a solucionar problemas con readiness, liveness y startup probes en Kubernetes, incluyendo timeouts, restart loops, health checks y cascading failures.

DevOps

Kubernetes Troubleshooting: Networking, Services, DNS, NetworkPolicy, Ingress y CNI

Aprende a solucionar problemas de networking en Kubernetes siguiendo el tráfico desde Pods y Services hasta EndpointSlices, DNS, NetworkPolicy, Ingress, Gateway API y CNI.

Comments