Fig modernise l’autocomplétion dans le terminal

Nicolas Furno |

Fig est un utilitaire destiné aux amateurs de terminal, cette interface textuelle qui n’a pas perdu tous ses arguments avec l’essor des interfaces graphiques. Cette app vient s’intégrer à une session de terminal pour offrir une autocomplétion plus moderne, similaire à celle que les développeurs connaissent bien dans leurs éditeurs de code. Un pop-up s’affiche après chaque commande avec toutes les possibilités, sous la forme d’une liste d’options triées par ordre d’utilisation.

Utilisation de Fig dans iTerm, ici pour ouvrir un dossier et lancer le générateur de site statique Hugo en utilisant des options.

L’app fonctionne autant pour les commandes de base, comme cd pour se rendre dans un dossier ou git pour gérer les dépôts de code. Elle peut aussi proposer des auto-complétions pour toutes les commandes installées par vos soins, à condition que les options disponibles soient connues. Sur l’exemple ci-dessus, j’utilise la commande cd pour ouvrir un dossier grâce aux suggestions de Fig, puis la commande hugo avec des options également fournies par l’utilitaire pour générer le site stocké dans ce dossier.

Toutes ces fonctions sont fournies « clés en mains » avec Fig, mais l’app peut aller nettement plus loin, avec des intégrations personnalisées. Il est déjà possible de créer ses propres commandes et raccourcis en Typescript, par exemple pour partager des commandes complexes au sein d’une équipe. À terme, Fig permettra même d’installer des modules supplémentaires grâce à une API, mais on n’y est pas encore. Le projet a été lancé officiellement à l’automne dernier et son développement est toujours actif, avec une intégration limitée pour le moment à macOS et quelques apps.

Vous pouvez utiliser Fig sur votre Mac, dans l’app Terminal fournie par Apple, dans iTerm2, Tabby et Hyper, ainsi que le terminal intégré à VSCode, l’éditeur de Microsoft. Les versions Linux et Windows de l’app sont en cours de développement et elles ne sont pas encore disponibles. L’app est partiellement open-source (le cœur reste propriétaire, mais les modules comme celui destiné à l’autocomplétion sont ouverts) et elle restera gratuite pour les particuliers, avec des abonnements payants pour les entreprises, sur le même modèle que GitHub. À noter que le fonctionnement se fait uniquement en local, les données ne sont pas envoyées sur un serveur. En revanche, il faut fournir une adresse mail pour utiliser l’app.

La section dédiée aux modules dans les réglages présente cette future fonction, pas encore implémentée.

Les modules indispensables au bon fonctionnement de Fig reposent sur une base de JavaScript (Typescript), mais cela ne veut pas dire qu’il s’agit d’une app Electron lourde pour autant. La version macOS repose largement sur du Swift et ses concepteurs ont soigné les performances pour que le terminal reste rapide à utiliser, c’est l’un de ses principaux arguments après tout. Sur mon Mac Studio, je n’ai pas noté de latence particulière, mais il faut dire que c’est une machine puissante et peut-être qu’un Mac plus ancien aura plus de mal.

Quoi qu’il en soit, Fig peut être testée gratuitement en l’installant soit avec le gestionnaire de paquets Homebrew (brew install fig), soit via le lien de téléchargement affiché sur le site officiel. L’app nécessite macOS 10.13 au minimum, elle est optimisée pour les Mac Intel et Apple Silicon et son interface n’est proposée qu’en anglais.

Tags
avatar oomu | 

"L’app est partiellement open-source (le cœur reste propriétaire, mais les modules comme celui destiné à l’autocomplétion sont ouverts) et elle restera gratuite pour les particuliers, avec des abonnements payants pour les entreprises, sur le même modèle que GitHub."

yurk.

avatar thewindwaker | 

😂💪

avatar radeon | 

Cool c’est compatible avec les softs de jetbrains :]

avatar bompi | 

Niveau sécurité, il faut vraiment avoir confiance.
Ce qui n’est pas mon cas. Je me contenterai du mode normal du terminal.

avatar Nicolas Furno | 

@bompi

Ah oui, j’aurais pu préciser, tout est fait en local, ils n’ont rien côté serveurs, sauf des statistiques que l’on peut désactiver.

avatar bompi | 

Il leur faut quand même faire des appels pour les configurations, non ?
En fait, quand bash est bien configuré (comme sur Linux, par défaut…) on a une excellente complétion vraiment locale des commandes

avatar Nicolas Furno | 

@bompi

Je ne crois pas que ce soit nécessaire, mais je peux me tromper.

Et oui, c’est plus une histoire d’interface en fait. Voir directement la liste des options pour chaque commande est assez puissant, surtout quand on débute ou découvre un nouvel outil CLI.

avatar AltoCroque | 

Bonjour Nicolas,

C'est quoi le tips pour avoir les stats de ton Mac en haut de ton terminal?

Merci!

avatar Nicolas Furno | 

@AltoCroque

C’est l’une des fonctions d’iTerm2.

avatar AltoCroque | 

Ok je vais chercher comment activer ça! Et tu as le nom de ton theme? merci encore 😇

avatar Nicolas Furno | 

@AltoCroque

Du tout, mais c'est l'un de ceux fournis avec iTerm2. Y en a un paquet, tu peux les tester et voir en live ce que ça donne. 🙂

avatar Amaczing | 

Merci bcp pour la découverte de cet utilitaire.

avatar ssssteffff | 

J’ai voulu la tester la semaine dernière (via l’installeur et non brew) et ça m’a demandé la création d’un compte à la fin de l’install / configuration. Est-ce possible de faire sans ?

avatar Nicolas Furno | 

@ssssteffff

Je ne crois pas que ce soit possible, en effet.

avatar TR3NT | 

Je l'utilise depuis plusieurs mois, c'est vraiment très cool 👍.

avatar f3nr1l | 

Il y a aussi l’excellllllllent oh my zsh:

https://ohmyz.sh

avatar Nicolas Furno | 

@f3nr1l

Je l'utilise d'ailleurs partout ! Mais il faut reconnaître que Fig a une approche différente, en listant dans un menu graphique tout ce qui est possible pour toutes les commandes.

avatar ssssteffff | 

@nicolasf

Et les deux se complètent !

avatar macgate | 

"L’app nécessite macOS 10.13 au minimum" : Nop ça ne marche pas, il faut au moins 10.14

avatar wooooky | 

Un shell plus recent orienté objet qui manipule du JSON: https://nacre.sh

CONNEXION UTILISATEUR