Autojump

Tuesday, 21 December 2010
|
Écrit par
Grégory Soutadé



Un peu de pub pour un petit outil dont on ne peut plus se passer une fois qu'on y a goûté. Quand on est développeur et qu'on utilise régulièrement la ligne de commande (projets, compilation, gestion de version ...) on se retrouve souvent dans les même dossiers (projetX, build, etc ...) et il n'est pas rare que ces chemins soient lointains les uns des autres. Joel Schaerer a donc humblement développé autojump. "humblement" car c'est un petit outil, mais qui remplit pleinement sa fonction (et en plus l'auteur est Français).

La version vanilla d'autojump mémorise sa position dans le système de fichiers à chaque commande, permettant ainsi de faire des statistiques sur les endroits où l'on se trouve le plus souvent, mais surtout de pouvoir sauter d'un endroit à un autre grâce à la commande "j" qui analyse son paramètre et essais de le faire correspondre à un chemin connu (les plus utilisés seront les premiers). Autojump supporte bien évidement l'auto-complétion par tabulation !

Exemple : Si le chemin "/home/soutade/Projets_Perso/KissCount" est enregistré dans autojump, il suffit d'entrer "j kiss" pour sauter directement à cet endroit, ce qui est un gain de temps considérable.

Autojump supporte plusieurs paramètres : "j greg kiss" saute sur "/home/greg/Projets_Perso/KissCount"

En cas de conflit on peut utiliser tab et choisir le chemin le plus approprié :

cd v2__[tab]
v2__1__/home/soutade/Projets/v2-helium-greg
v2__2__/home/soutade/Projets/v2-helium

La commande "jumpstat" permet d'avoir un aperçu de la base

...
54.5:  /home/shared/musique
60.0:  /home/joel/workspace/coolstuff/glandu
83.0:  /home/joel/workspace/abs_user/autojump
96.9:  /home/joel/workspace/autojump
141.8: /home/joel/workspace/vv
161.7: /home/joel
Total key weight: 1077


D'autres alternatives existent comme apparix, wcd ou kcd mais je les trouve moins élégantes (nécessite de scanner le système de fichier, utilisation moins transparente ...).

Le code d'autojump est disponible ici : https://github.com/joelthelion/autojump/wiki

Une démonstration (en) est disponible sur youtube : http://www.youtube.com/watch?v=tnNyoMGnbKg

Une fois installé, c'est adopté. Néanmoins en réfléchissant deux secondes je trouvais dommage qu'autojump soit appelé à chaque commande. En effet quand je suis dans un répertoire et que je fait cd .. je n'ai pas forcément envie que ce soit répertorié. J'ai donc retroussé mes manches et modifié le comportement du logiciel (https://github.com/soutade/autojump/tree/v2).

Sur ma version "cd" devient un alias d'autojump. Elle permet donc à la fois de sauter à un endroit et d'enregistrer un chemin dans la base de façon transparente. Si un dossier n'est pas trouvé dans la base ou qu'il est dans le répertoire courant, c'est la complétion normale de bash qui s'applique.

Il y a donc deux modes : manuel (il faut faire cd -a "chemin" pour enregistrer un chemin) ou automatique (chemin enregistré à chaque commande cd). Tout ceci est paramétrable dans le autojump.bash.

Par effet de bord on peut indifféremment manipuler la base avec la commande autojump ou cd.

En plus de cette modification j'ai aussi rajouté la commande "autojump/cd --remove key" qui permet de supprimer une entrée dans la base (la complétion pour key est effective), ainsi que la commande "cd/autojump --purge num" qui permet de supprimer toutes les entrées dont le nombre est inférieur ou égal à num.

En résumé, quelle que soit la version utilisée, il faut absolument essayer cet outil !

La version 2 d'Autojump est disponible

Auteur :


e-mail* :


Le commentaire :




* Seulement pour être notifié d'une réponse à cet article
* Only for email notification