Utiliser fish

Published: ven. 06 septembre 2019
Updated: ven. 06 novembre 2020
By Jorispilot

In sysadmin.

Fish, le Friendly Interactive SHell, fournit des fonctionnalités attrayantes out of the box, contrairement à zsh qui requert une longue configuration [3]. Voici comment je l’ai mis dans mon système.

Intégration au système

Bien qu’il soit envisageable [1] de configurer /usr/bin/fish comme votre shell par défaut, il est préférable de ne l’utiliser que pour les sessions interactives. Pour cela, il faut remplacer votre .bashrc par ça:

if [ -z "$BASH_EXECUTION_STRING" ]; then exec fish; fi

Ainsi, /etc/profle sera correctement lu. La condition permet de ne pas retomber dans Fish dans des commandes de la forme bash -c "…", (ce qui peut arriver au lancement de Gnome shell par exemple).

Pour démarrer un shell Bash sans retomber dans Fish, faire bash --norc.

Configuration de base

  • Une fois fish lancé, exécutez fish_config. Vous pourrez ainsi configurer l’apparence de votre terminal:

    Prompt

    En ce moment, j’utilise Informative Vcs qui affiche les informations relative au dépot git du répertoire courant.

    Abbreviations

    C’est une alternative au alias de bash que j’aime bien. Si vous entrez des abréviations via l’interface web, ceux-ci seront enregistrés dans le fichier variable ~/.config/fish/fish_variables.

  • Le répertoire de configuration de fish est ~/.config/fish et le fichier rc est ~/.config/fish/config.fish. Je préfère, par exemple, définir mes abbréviations dans ce fichier.

    abbr --add sys systemctl
    abbr --add syu systemctl --user
    # etc.
    
  • Enfin, je me suis débarassé du message de bienvenue en entrant directement dans un terminal:

    set -U fish_greeting
    

    Qui attribue une chaîne de charactères vide à la variable fish_greeting.

Ajout de fzf

Fzf, le command-line fuzzy finder, est utilisable avec fish. Pour cela [2], il faut exécuter la fonction fzf_key_bindings, que j’ai remappé ensuite:

fzf_key_bindings
bind -e \ct  ## Actually, I don't want these two
bind -e \cr
bind -e \ec  ## And change binding for fzf-cd
bind \cv fzf-cd-widget

Oui, car je préfère la recherche historique par défaut de fish.

links

social