Configuration de Fish

Rédigé par Thomas Duchesne - - 1 commentaire

Dans mon terminal, j’utilise le shell Fish. C’est plus convivial que Bash et la configuration par défaut évite d’avoir à chercher longtemps pour la retrouver sous Zsh. Je vais présenter ici ma configuration, qui est pour le moment assez modeste.

Tout d’abord, un mot sur la manière générale de configurer Fish. Avec les shells plus classiques, on édite généralement un fichier caché à la racine du dossier personnel (par exemple .bashrc pour Bash). Avec Fish, on édite plusieurs fichiers dans le dossier ~/.config/fish. Fish exécute tous les fichiers portant l’extension .fish contenus dans ce dossier. La documentation conseille de créer un fichier config.fish pour la configuration générale et de ranger les fonctions personnalisées (qui servent aussi d’alias) dans le dossier ~/.config/fish/functions et de créer un fichier par fonction qui porte le nom de celle-ci (par exemple fonction.fish pour la fonction fonction). Cette manière de configurer est très claire mais elle a l’inconvénient de ne pas être sauvegardable aussi facilement qu’un simple fichier.

Capture d’écran de mon terminal

L’invite de commande

Dans Fish, l’invite de commande est défini par une fonction (contrairement à Bash ou c’est une variable). Il est très facile de faire des choses assez compliquées puisqu’on a accès à l’intégralité du langage de script : on programme littéralement l’invite de commande.

function fish_prompt
    set_color blue
    echo "["(prompt_pwd)"]"
    set_color yellow
    echo -n (whoami)
    set_color white
    echo -n " -> "
    set_color normal
end

La documentation de Fish indique que la commande echo ne passe pas à la ligne dans la fonction fish_prompt. Il se trouve que sur mon ordinateur, le saut de ligne a bien lieu : je suis donc forcé d’utiliser echo avec l’option -n afin d’éviter un retour à la ligne.

Par défaut, Fish ne garde que la première lettre des dossiers de l’arborescence courante. Je trouve ce comportement peu pratique, d’autant plus que mon invite de commande tient sur deux lignes et que la première est dédiée au chemin : j’ai donc toute la place nécessaire pour l’afficher entièrement. Il a donc fallu réécrire la fonction prompt_pwd. Comme j’aime bien l’abréviation du dossier personnel en ~, j’ai réutilisé un code trouvé sur Stack Overflow :

function prompt_pwd
    echo $PWD | sed -e "s|^$HOME|~|"
end

Suppression du message de bienvenue

Par défaut, fish affiche deux lignes de texte lorsqu’on ouvre un terminal :

Bienvenue dans fish, le shell amical et interactif
Tappez help pour des instructions sur l'utilisation de fish

Pour les supprimer, la documentation indique d’effacer la variable fish_greeting :

set --erase fish_greeting

Commande personnalisée

J’utilise Archlinux et j’ai donc accès à AUR. Les nouvelles versions ne permettent plus à ma connaissance l’utilisation facile de Yaourt pour automatiser le téléchargement et l’installation des paquets. J’ai donc appris à refaire le travail de Yaourt à la main (c’est d’ailleurs très facile, sauf si des dépendances sont aussi dans AUR). Avant le passage à Git pour la gestion des fichiers PKGBUILD, il fallait télécharger l’archive depuis AUR, la décompresser puis exécuter makepkg -s dans le dossier ainsi créé. Le paquet se crée alors tout seul et il suffit de l’installer avec pacman -U. Maintenant, il faut cloner un dépôt Git :

git clone https://aur.archlinux.org/paquet

Cela crée un dossier comme avant et la méthode de création et d’installation du paquet n’a pas changé.

J’ai fini par en avoir marre de réécrire à chaque fois une longue commande (heureusement, l’auto-complétion aide à s’en souvenir) et j’ai donc créé une commande spéciale pour cloner un dépôt :

function aur-get
    git clone https://aur.archlinux.org/$argv
end

La fonction aur-get prend comme paramètre le nom du paquet et le téléchargement se lance. Il n’y a aucune gestion particulière des erreurs : en fait, c’est simplement une sorte d’alias mais cela a le mérite d’être bien plus pratique que de tout recopier à chaque fois.

1 commentaire

#1  - nonymous a dit :

Chouette un blog qui va causer Linux ! En tout cas le premier article fait bonne impression, ça semble sérieux. Dans mes favoris, et longue vie au blog !

Fil Rss des commentaires de cet article

Écrire un commentaire

Quelle est la première lettre du mot utzk ?