<!-- title: Mes outils en console -->
<!-- category: GNU/Linux -->

Depuis plusieurs mois, j'ai investi du temps pour peaufiner mes outils en console afin d'améliorer ma productivité. Ce n'est pas pour faire l'original à une époque où l'on cherche en permanence la **killer App** qui fait tout  visuellement et simplement mais ma chaîne de développement au niveau pro a migré progressivement dans Win10/WSL et les outils en ligne de commande se sont imposés rapidement par leur efficacité. Alors je ne code quand même pas en Java dans Vim, ni dans Visual Studio Code d'ailleurs (mais j'ai tenté) ; j'ai besoin d'un IDE lourd et complet pour avoir une vue claire de d'ensemble des projets, bref j'utilise [Eclipse](https://www.eclipse.org). Mais la gestion des sources, la compilation finale, les déploiements sont gérés en console. Finalement, j'ai une gestion similaire en pro et perso mais avec des langages et des outils différents. 

Le déclencheur de ce retour forcené à la console a été Git, quand j'ai eu besoin de passer au stade supérieur, et acquérir un niveau d'utilisation intermédiaire/avancé de l'outil. J'ai commencé par des clients Git qui rassurent avant de me former [à la source](https://git-scm.com/) donc passage au binaire Git pour maîtriser les fonctions plus avancées (cherry-pick, merge, rebase), découverte des alias Git pour se créer [des raccourcis sympas](https://github.com/kianby/dotfiles/blob/main/dot_gitconfig.tmpl). Sur la route, j'ai opté pour le [gestionnaire de DotFiles ChezMoi](https://blogduyax.madyanne.fr/2021/bienvenue-chez-moi/) pour maintenir une configuration similaire entre plusieurs environnements.

Qui dit "mode console" suppose un multiplexeur de terminal. De longue date j'ai opté pour [Tmux](https://blogduyax.madyanne.fr/2019/tmux-et-msys2/) qui n'est pas le plus simple dans la catégorie et demande de l'investissement pour obtenir  [une configuration à son goût](https://github.com/kianby/dotfiles/blob/main/dot_tmux.conf). Mais en retour, l'outil n'a pas de limite grâce à un système de plugins et d'une utilisation classique où j'ouvrais des fenêtres et des volets (Windows et Panes dans la terminologie Tmux) à la demande dans une session unique, j'ai découvert l'utilisation en mode projet avec des sessions pré-configurées grâce à [Tmuxp](https://tmuxp.git-pull.com/). Le passage au multi-session ouvre une nouvelle dimension à l'utilisation de cet outil hyper-puissant. Je pourrais probablement en reparler dans 2 ans, c'est comme Vim, on ne finit jamais d'apprendre de nouvelles possibilités. 
 
Enfin pour se déplacer rapidement dans une arborescence de plusieurs centaines de répertoires efficacement il me manquait quelque chose. J'ai regardé du côté d'outils style *cd avec mise en cache* qui mémorisent les répertoires déjà visités puis j'ai été ébloui par [FZF](https://github.com/junegunn/fzf). De prime abord, ça ne paie pas de mine : un outil qui fournit de la complétion pour trouver un répertoire... ou éditer un fichier... ou se connecter en SSH... ou rechercher dans l'historique des commandes. Le champ d'application est large et non limité, on peut [mettre du fzf à toutes les sauces](https://github.com/kianby/dotfiles/blob/main/dot_bashrc.d/fzf.bashrc.tmpl) par un système de pipe. Combiné à une version rapide de find comme [FD ou FDFIND](https://github.com/sharkdp/fd), se déplacer dans mes centaines de répertoires ou retrouver un fichier est ultra-rapide. C'est la pièce manquante pour gérer facilement de multiples de projets en console. 

Mon duo est très bien rôdé : Tmux + FZF.
