web-dev-qa-db-fra.com

les thèmes oh-my-zsh ne s'affichent pas correctement (l'arrière-plan reste blanc)

J'essaie de comprendre pourquoi mes thèmes oh-my-zsh ne fonctionnent pas correctement. Les couleurs s'affichent correctement, mais l'arrière-plan reste blanc (avec du texte noir). Voici mon fichier /.zshrc et la variable de chemin actuelle:

    # Path to your oh-my-zsh configuration.
    ZSH=$HOME/.oh-my-zsh

    export PATH="$HOME/.rbenv/bin:$PATH"
    eval "$(rbenv init -)"

    # Set name of the theme to load.
    # Look in ~/.oh-my-zsh/themes/
    # Optionally, if you set this to "random", it'll load a random theme each
    # time that oh-my-zsh is loaded.
    export ZSH_THEME="robbyrussell"

    # Example aliases
    # alias zshconfig="mate ~/.zshrc" 
    # alias ohmyzsh="mate ~/.oh-my-zsh"

    # Set to this to use case-sensitive completion
    # CASE_SENSITIVE="true"

    # Comment this out to disable weekly auto-update checks
    # DISABLE_AUTO_UPDATE="true"

    # Uncomment following line if you want to disable colors in ls
    #DISABLE_LS_COLORS="true"

    # Uncomment following line if you want to disable autosetting terminal title.
    # DISABLE_AUTO_TITLE="true"

    # Uncomment following line if you want red dots to be displayed while waiting for   completion
    # COMPLETION_WAITING_DOTS="true"

    # Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*)
    # Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/
    # Example format: plugins=(Rails git textmate Ruby lighthouse)
    plugins=(git Rails Ruby brew)

    source $ZSH/oh-my-zsh.sh

    # Customize to your needs...
    autoload -U colors
    colors

voici $ PATH:

    ➜  ~  echo $PATH
    /Users/natascha/.rbenv/shims:/Users/natascha/.rbenv/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/usr/local/git/bin:/usr/texbin

Je suis sur Mac OS X 10.7.5 et ai installé oh-my-zsh il y a quelques mois. J'ai publié un article dans le numéro git, https://github.com/robbyrussell/oh-my-zsh/issues/ 929 # issuecomment-11652602 , semble-t-il toujours pas été résolu? Mes plugins fonctionnent (c’est-à-dire que je peux taper Rails c pour "console Rails"). 

Merci pour toute aide. 

18
zima

Réponse courte: non, zsh ne peut pas vous aider ici. Vous devez modifier les paramètres de couleur émulateur de terminal, pas les paramètres zsh.

Voici ce que vous voyez actuellement:

What you're seeing

et voici ce que vous vous attendez à voir:

The RobbyRussell Theme

C'est la ligne qui produit cette invite:

Prompt='%{$fg_bold[red]%}➜ %{$fg_bold[green]%}%p %{$fg[cyan]%}%c 
%{$fg_bold[blue]%}$(git_Prompt_info)%{$fg_bold[blue]%} % %{$reset_color%}'

Le Z-Shell ne possède quelques réglages foreground, background que vous pouvez utiliser dans Prompt - c'est ce que signifie fg_bold (premier plan à gras). Vous pouvez remplacer ceci par bg_ pour l'arrière-plan et omettre le bold pour utiliser une police non en gras.

Par exemple, nous pouvons définir l'arrière-plan de Prompt sur green en ajoutant %{bg[green]%}:

Prompt='%{$bg[green]%}%{$fg_bold[red]%}➜ %{$fg_bold[green]%}%p %{$fg[cyan]%}%c 
%{$fg_bold[blue]%}$(git_Prompt_info)%{$fg_bold[blue]%} % %{$reset_color%}'

Cela se traduit par:

Green background in the Prompt

Cependant, ce n'est probablement pas ce que vous voulez . Notez plusieurs choses:

  1. Le bg[green] ne pas s’étend au bord de la fenêtre du terminal - les paramètres Prompt ne fonctionnent que là où la ligne est dessinée .
  2. La couleur d'arrière-plan est réinitialisée à la valeur par défaut à la fin de l'invite. Cette opération est effectuée par %{$reset_color%} (nécessaire pour changer la couleur foreground à la valeur par défaut). Obtenir une couleur d'arrière-plan consistante et complète devient rapidement désordonné.

Comment fonctionnent les couleurs

Grosso modo (je peux me tromper dans les détails, mais le Gist général est correct, je crois): le shell que vous utilisez envoie un color code à émulateur de terminal. Le émulateur de terminal est chargé d'interpréter ce code de couleur et de l'afficher à l'écran. Cela signifie que vous pouvez manipuler deux paramètres:

  1. Les paramètres de couleur Shell. C'est ce que vous faites dans votre zshrc. Premièrement, cela permet la cohérence - vous pouvez dire "Afficher this bit de l'invite dans le même $COLOR que que bit de l'invite". Ceci ne signifie pas signifie que l'utilisateur va voir l'invite dans $COLOR; $COLOR est une étiquette, pas beaucoup plus.
  2. Les paramètres de couleur affichés. C’est là que vous définissez les options préférées: font, background, text color, etc. Vous pouvez indiquer "tout ce que le shell dit: afficher $COLOR_1 comme red, $COLOR_2 comme green", etc.

Il existe 16 couleurs que vous pouvez utiliser dans un terminal ANSI, qui peuvent ou ne peuvent pas être affichées correctement. Vérifiez ce tablea pour certaines couleurs de terminal communes, et notez les différences affichées entre elles!

Fixer vos couleurs

Si vous utilisez Terminal.app (sous OS X, je recommanderais iTerm2), ouvrez les préférences pour Terminal (command+,) et sélectionnez "Paramètres". Vous pouvez choisir parmi un certain nombre de "profils" - pour émuler la capture d'écran robbyrussell ci-dessus, vous voudriez modifier un peu les couleurs. "Homebrew" est assez proche, mais a des couleurs de "texte" différentes (vert au lieu de blanc).

[Voici le thème robbyrussellzsh avec le profil Homebrew Terminal.app:

Robby Russel <code>zsh</code> theme with <code>Homebrew</code> Terminal.app profile

Si vous souhaitez un bon agencement de couleurs prédéfini et facile à regarder, consultez Solarized .

25
simont

Comme indiqué dans la réponse ci-dessus, il s'agit de "Vous devez modifier les paramètres de couleur de l'émulateur de terminal:"

Je ne trouve pas de raison de changer d'application pour terminal, le moyen le plus simple consiste à changer le thème et à changer l'un des thèmes disponibles dans le lien ci-dessous.

thèmes osx-terminal

0
talsibony