URL: https://linuxfr.org/users/jeanclaude-2/journaux/fzf-et-mon-terminal Title: fzf et mon terminal Authors: barmic 🦦 Date: 2021年05月10日T17:47:40+02:00 License: CC By-SA Tags: zsh et fzf Score: 3 Je suis un fanatique de la cli et par cli j'entends bien l'utilisation de ligne de commandes. En effet j'utilise très peu d'outils curse (vim et htop principalement). Je sais que ça fait rêver certains, mais moi je déteste même l'autocomplétion de zsh via un menu. Outre le coté purement subjectif de ce que l'on aime ou pas, il y a une raison tout à fait objective. La cli est répétable et scriptable ce qui ne fonctionne généralement pas bien dès qu'on utilise du curses. Néanmoins, même si j'utilise principalement des outils assez vieux (rxvt, vim, les binutils) j'aime bien regarder les nouveautés et voir comment elles peuvent m'aider. C'est par contre plutôt rare qu'un outil arrive à se frayer un chemin jusqu'à mon terminal. J'ai souvent l'impression que les nouveaux outils sont fait pour s'éviter un alias ou une fonction de terminal voir ne sont pas du tout fait pour de la cli. Vous me voyez venir, c'est le cas de [fzf](https://github.com/junegunn/fzf) dont je n'ai jamais trouvé l'utilité. Je suis tombé récemment sur un billet : [Improving shell workflows with fzf](https://seb.jambor.dev/posts/improving-shell-workflows-with-fzf/) qui m'a un peu plus fait réfléchir et j'ai trouvé un usage sympa à fzf ! Je m'en vais vous l'expliquer, qui sait, peut être que ça inspirera certains. Je passe pas mal de temps à lancer des commandes depuis un même dossier : ```sh % cmd foo/bar/bar % cmd foo/foo/foo/foo % cmd baz ... ``` (les commandes ne se suivent pas particulièrement ce sont des exemples qui sont tout à fait séparés) Naviguer à coup de tab dans cette arborescence et assez fastidieuse même si tout à fait faisable. La solution classique avec fzf c'est bien quelque chose du genre (je dis bien du genre ça doit être raffiné) : ```sh % cmd $(print -l **/*(/) | fzf) ``` On obtiens la liste des dossiers, il ne reste qu'à la filtrer et sélectionner celui qui nous intéresse et c'est bon. Mais pas pour moi. En effet j'ai besoin de répéter plusieurs fois l'opération sur un même dossier, là où actuellement mon historique de commande me permet de simplement faire un rappel (`!cmd`), je dois de nouveau chercher mon dossier à chaque fois :( Sauf avec une petite idée qui vient de zsh (je ne connais pas l'équivalent pour bash) : `print -z` L'option `-z` permet d'écrire dans la prochaine invite de commande. Ainsi on peut se créer une commande qui en l'absence de chemin, va lancer fzf pour le trouver, mais au lieu de lancer la commande une fois que le chemin sera trouver, il l'imprime sur la prochaine invite. ```sh % cmd # recherche avec fzf % cmd foo/bar ``` Et il suffit de valider cette dernière. Je trouve que ça permet de garder un workflow très cli tout en ayant quelque chose de plus sympa pour sélectionner.

AltStyle によって変換されたページ (->オリジナル) /