Obtenir de l’italique dans son prompt ZSH

Il y a quelques temps, je suis tombé amoureux d’une police de caractères : Operator Mono.

Une illustration d’Operator Mono

Le prompt de mon terminal me semblait un excellent endroit pour profiter de l’italique particulièrement plaisant de cette police.

La mise en place n’était cependant pas aussi simple que je le pensais. Voici donc la marche à suivre.

Tous les terminaux ne supportent pas l’italique. iTerm 2 fait partie de ceux qui permettent son utilisation. Pour cela, assurez-vous que l’option est activée dans la configuration :

Dans Prrofils, Texte, Autoriser les textes italiques

J’utilise oh-my-zsh pour gérer ma configuration ZSH et ai choisi un thème personnalisé situé dans ~/.oh-my-zsh/custom/themes/my-theme.zsh-theme :

PROMPT='$(git_prompt_info)%{$fg_bold[blue]%}%m%{$reset_color%} %{$fg_bold[white]%}%~:%{$reset_color%} '
RPROMPT="%{$fg_bold[green]%}%*%{$reset_color%}"

ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg_bold[red]%}<"
ZSH_THEME_GIT_PROMPT_SUFFIX=">%{$reset_color%} "

Dans le terminal le rendu est proche de celui-ci :

Mon prompt sans italique, statut git, nom de machine, dossier courant

De prime abord, je pensais simplement devoir remplacer les appels à $fb_bold pour quelque chose comme $fg_italic. Malheureusement rien n’est défini pour cela.

En remontant la piste de la définition des couleurs dans ZSH, j’ai finalement trouvé où était défini $fg_bold, dans un fichier nommé colors.

En recopiant et en adaptant le code trouvé, il est possible d’ajouter l’accès aux codes italiques :

local lc=$'\e[' rc=m

typeset -AHg fg_italic fg_no_italic
for k in ${(k)color[(I)fg-*]}; do
  fg_italic[${k#fg-}]="$lc${color[standout]};${color[$k]}$rc"
  fg_no_italic[${k#fg-}]="$lc${color[normal]};${color[$k]}$rc"
done

PROMPT='$(git_prompt_info)%{$fg_italic[blue]%}%m%{$reset_color%} %{$fg_italic[white]%}%~:%{$reset_color%} '
RPROMPT="%{$fg_italic[green]%}%*%{$reset_color%}"

ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg_italic[red]%}<"
ZSH_THEME_GIT_PROMPT_SUFFIX=">%{$reset_color%} "

Et voilà à quoi ressemble le prompt une fois la configuration activée :

Mon prompt avec italique, statut git, nom de machine, dossier courant

Publié le 30 avril 2016

Notre vision des choses vous correspond ? Vous avez envie de travailler avec nous ?