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