Cet article n'a pas pour but de vous montrer la configuration complète de mon terminal sous macOS, mais de vous présenter certains outils, commandes et utilitaires que j'utilise au quotidien dans mon workflow de développeur web. Je passe pas mal de temps dans le terminal, c'est une partie importante de ma journée de travail, et je voulais donc partager cela avec vous, après pas mal de recherches et expériences pour optimiser cette partie de mon flux de travail.
iTerm2
iTerm2 est une alternative au terminal Apple intégré et le successeur de iTerm. Il s'agit d'une application moderne aux fonctionnalités avancées, qui est de loin le terminal le plus puissant et flexible que vous puissiez utiliser sur macOS.
Pour le rendre plus attrayant et améliorer son interface utilisateur, j'utilise la palette de couleurs Dank Neon avec le thème Spaceship et la police d'écriture Fira Code. Il en existe évidemment de nombreux autres comme les palettes de couleurs Nord et Yoncé, les thèmes Powerlevel9k et Agnoster ou les polices d'écriture Hack et Source Code Pro.
Homebrew
Homebrew se présente comme le gestionnaire de paquets manquant pour macOS et est un outil essentiel pour tout développeur. Homebrew est un système de gestion de paquets libre et open-source qui simplifie l'installation des logiciels sur macOS. Homebrew installe les paquets dans leur propre répertoire et fait des liens symboliques vers leurs fichiers dans /usr/local. Homebrew n'installera pas de fichiers en dehors de son préfixe, et vous pouvez placer une installation Homebrew où vous le souhaitez.
Vous pouvez l'installer avec la commande suivante :
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Cakebrew
Si vous souhaitez gérer vos paquets Homebrew avec une interface graphique, alors Cakebrew est fait pour vous. Il s'agit d'un moyen pratique d'utiliser Homebrew pour vos tâches quotidiennes. Il est à Homebrew ce que Synaptic est aux gestionnaires de paquets Linux. Il ajoute une interface utilisateur qui permet de rechercher des paquets, les installer, les désinstaller et les mettre à jour, mettre à jour Homebrew et exécuter l'outil de nettoyage, etc. Vous pouvez également utiliser cet utilitaire pour rechercher et découvrir de nouveaux paquets.
Zsh
Maintenant que notre terminal est tout beau tout frais, intéressons-nous à notre shell. Le shell Z (aussi connu sous le nom de Zsh) est un shell Unix construit sur bash (le shell par défaut de macOS) avec tout un tas de fonctionnalités supplémentaires provenant notamment de bash, ksh et tcsh. Il s'agit donc d'un shell plus puissant, plus fonctionnel et plus personnalisable que bash.
Vous pouvez l'installer très simplement avec la commande suivante (en utilisant Homebrew) :
$ brew install zsh
Vous pouvez également utiliser Fish (Friendly Interactive SHell) qui se veut plus interactif et convivial que les anciens shells. L'objectif est de donner à l'utilisateur un ensemble riche de fonctionnalités avancées et puissantes.
Oh My Zsh
Maintenant que Zsh est opérationnel, il est temps de le personnaliser. Vous êtes probablement prêt à lancer Vim ou Emacs (ou nano, je ne juge pas) et à commencer à éditer les fichiers de configuration, mais attendez une seconde, je vais essayer de vous faire gagner du temps. Oh My Zsh est un framework open source communautaire pour la gestion de votre configuration zsh. Il est livré avec un grand nombre de fonctions prêtes à l'emploi et vous permet d'améliorer votre expérience du terminal. Il existe un framework assez similaire pour le shell Fish, nommé Oh My Fish.
Vous pouvez installer Oh My Zsh avec la commande suivante :
$ sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
Prezto est un autre très bon framework pour Zsh, et il existe aussi Antigen, zplug et zgen qui sont des gestionnaires de plugins pour Zsh.
Zsh Syntax Highlighting
Zsh Syntax Highlighting est un plugin pour Zsh dont le but est d'apporter à Zsh une syntaxe semblable à celle du shell Fish. Il permet de mettre en surbrillance les commandes lorsqu'elles sont tapées dans Zsh (comme dans la plupart des éditeurs de code). Cela aide à revoir les commandes avant de les exécuter, en particulier pour détecter les erreurs de syntaxe.
Vous pouvez l'installer avec la commande suivante :
$ brew install zsh-syntax-highlighting
Vous pouvez bien entendu installer ces plugins Zsh avec votre gestionnaire de plugins (Antigen, zplug, zgen…) si vous en avez installé un plutôt que d'utiliser brew ou git.
Zsh Autosuggestions
Zsh Autosuggestions est un plugin dont le but est d'apporter des autosuggestions pour Zsh. Il suggère des commandes au fur et à mesure que vous tapez, en fonction de votre historique des commandes.
C'est très pratique et cela permet de gagner beaucoup de temps, notamment quand on tape les mêmes commandes à longueur de journée. Vous pouvez l'installer avec la commande suivante :
$ brew install zsh-autosuggestions
🌸 Fzf
Fzf est un petit outil rapide, polyvalent et multi-plateforme, qui vous aide à rechercher et ouvrir des fichiers rapidement dans votre système. Il est portable, sans dépendances et dispose d'une mise en page flexible avec prise en charge de Vim/Neovim, des raccourcis clavier et de l'auto-complétion.
Vous pouvez l'installer avec la commande suivante :
$ brew install fzf
Il existe également Fzy qui se présente comme un meilleur fuzzy finder que Fzf, à voir, je ne l'ai pas essayé.
k
k est un script / plugin Zsh pour rendre les listes de répertoires plus lisibles, ajoutant un peu de couleur et quelques informations sur l'état de git, des fichiers et répertoires.
Vous pouvez l'installer avec la commande suivante :
$ git clone https://github.com/supercrabtree/k $ZSH_CUSTOM/plugins/k
z - jump around
z est un plugin Zsh qui surveille vos répertoires les plus utilisés, basé sur la frecency. Après une courte phase d'apprentissage, z vous mènera au répertoire le plus fréquent qui correspond à tous les regex donnés dans la ligne de commande, dans l'ordre. Par exemple, z foo bar correspondrait à /foo/bar mais pas à /bar/foo.
Frecency est une fusion de “récent” et de “fréquence”. Il s'agit d'un classement pondéré qui dépend de la fréquence et de la date à laquelle quelque chose s'est produit. Autant que je sache, c'est Mozilla qui a inventé ce terme.
Vous pouvez l'installer avec la commande suivante :
$ brew install z
Ce sont les cinq plugins que j'utilise avec Zsh mais il en existe beaucoup d'autres. N'hésitez d'ailleurs pas à m'en recommander certains dans les commentaires si vous en connaissez des biens que je n'ai pas évoqués.
MacPorts
Le projet MacPorts, anciennement DarwinPorts, est un gestionnaire de paquets libre qui simplifie l'installation de paquets libres sous macOS et Darwin (ou OpenDarwin). C'est un projet gratuit et open source qui permet de simplifier l'installation d'autres logiciels open source. L'objectif est le même que celui de Fink.
Fink
Fink est un projet open source entièrement écrit en Perl destiné à porter (avec le minimum d'effort) des applications originellement écrites pour UNIX (GNU/Linux, Solaris, BSD, etc.) sur les systèmes Darwin, OpenDarwin, macOS (toutes versions depuis Puma jusqu'à Mojave).
Mas CLI
Mas CLI est une interface en ligne de commande simple et légère qui permet de chercher, d'installer, de mettre à jour et de désinstaller des applications de l'App Store d'Apple.
Vous pouvez l'installer avec la commande suivante :
$ brew install mas
Je n'utilise pas tous ces outils : par exemple, j'utilise Homebrew quotidiennement mais je n'ai pas MacPorts et Fink installés sur ma machine. Je n'utilise pas Prezto non plus car je préfère personnellement Oh My Zsh et je n'utilise pas de gestionnaire de plugins (même si je devrais sûrement). J'ai testé Cakebrew il y a quelque temps et c'est un bon logiciel mais j'ai une préférence pour la ligne de commande donc je ne l'utilise plus.
Voilà, c'est tout, voici tous les outils que j'utilise pour améliorer ma productivité lorsque je suis dans le terminal (très souvent). Cela correspond à mes besoins et vous n'aurez sûrement pas les mêmes donc n'hésitez pas à partager les outils, commandes et utilitaires que vous utilisez dans les commentaires. 🙂