My tribute to oh-my-zsh Theme
parce qu’un prompt qui convient vaux mieux que 1000 mots
Rappel
Ne réinventons pas la roue, même pour les descriptions :
ZSH
Zsh is a shell designed for interactive use, although it is also a powerful scripting language.
oh-my-zsh
oh-my-zsh is an open source, community-driven framework for managing your ZSH configuration. It comes bundled with a ton of helpful functions, helpers, plugins, themes, and few things that make you shout…
oh-my-zsh theme
Donc graphiquement, voilà à quoi ressemble mon prompt
:
Les bases
Je ne vois pas beaucoup l’intérêt d’afficher le hostname
de la machine courante, étant donné que le prompt
en lui-même ne sera jamais que sur ma machine. Sinon, j’apprécie le fait de voir l’utilisateur ainsi que le dossier courant. Par contre, les commandes que je tape, je préfère qu’elles soient écrites sur la ligne du dessous, question de lisibilité.
Donc ça nous donne un prompt
|
|
Le caractère de prompt
Pour se mettre dans le bain : le caractère “»” change de couleur en fonction de la réussite ou non de la dernière commande. Pour faire ça :
|
|
Git
Car c’est selon moi le meilleurs (D)VCS sur le marché, je l’utilise partout (ce blog, les documentations que j’écris, les projets, etc.), je l’utilise même pour gérer les dépôts SVN… Du coup je ne peux me servir que de Git.
Donc pour utiliser correctement Git, il faut voir ce que l’on fait:
- la branche sur laquelle on travaille,
- la branche distante (si elle existe) et la différence avec la branche courante,
- l’état du workspace, de l’index ainsi que du repository local.
Ceci n’est pas trop compliqué car avec oh-my-zsh, il y a la fonction git_prompt_status
qui permet de montrer ces informations. Il est uniquement nécessaire de mettre en place des variables :
Symbole | Description | Variable |
---|---|---|
- | Un fichier a été supprimé du local repository | ZSH_THEME_GIT_PROMPT_DELETED |
* | Un fichier est modifié dans le workspace | ZSH_THEME_GIT_PROMPT_MODIFIED |
+ | Un fichier a été ajouté dans l'index du repository | ZSH_THEME_GIT_PROMPT_ADDED |
? | Un fichier n'est ni dans l'index ni dans le local repository | ZSH_THEME_GIT_PROMPT_UNTRACKED |
Je veux maintenant pouvoir voir la branche sur laquelle je travaille :
|
|
Je veux ensuite avoir la branche distante :
|
|
Puis après je veux savoir l’état de la branche locale par rapport à la branche distante
|
|
Donc on met tout ce code dans une fonction, ainsi on peut l’appeler sur notre prompt
. Petite nuance, je le mets sur le rprompt
pour que le prompt
avec ou sans information Git ne bouge.
Vous pouvez remarquer que j’ai usé et abusé des variables pour mettre les messages : c’est pour toi public ! Non sans blague, ça permet de pouvoir changer les caractères / icônes utilisés sans toucher au code qui permet des les afficher… oui oui c’est très MVC tout ça… bref
Conclusion
Vous pouvez trouver sur mon github le fichier complet de ce code.
Les retours, commentaires, avis sont évidemment les bienvenus !