Xterm.js: Les codes de couleur ANSI ne s'affichent pas correctement

Créé le 20 août 2017  ·  4Commentaires  ·  Source: xtermjs/xterm.js


La couleur ANSI d'arrière-plan par défaut ne s'affiche pas correctement sur le sous-système Windows pour Linux (terminal bash natif pour Windows), créant une couleur d'arrière-plan bleue en sortie alors qu'il ne devrait pas y en avoir.

Des détails

  • Navigateur et version du navigateur: terminal embarqué VSCode et terminal Hyper.is (dernières versions)
  • Version du système d'exploitation: Windows 10

Étapes à suivre pour reproduire

  1. Nouvelle réinstallation du sous-système Windows pour Linux
  2. Ouvrir le terminal dans VSCode ou Hyper.is
  3. Définissez le terminal par défaut sur le shell bash (VSCode: "terminal.integrated.shell.windows": "C:\\WINDOWS\\Sysnative\\bash.exe" , Hyper: shell: 'C:\\Windows\\System32\\bash.exe' )
  4. La couleur de sortie par défaut aura un fond bleu

Pour référence, l'invite est la valeur par défaut:

PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '

[\033[00m\] aurait dû être réinitialisé à la valeur par défaut, ce qui est le cas, mais la valeur par défaut semble être fausse. L'utilisation de [\033[39m\] donne également le même effet.

L'utilisation par défaut de Windows CMD ou PS ne reproduit pas les mêmes effets.

Images montrant le problème

Les bordures des images reflètent l'arrière-plan réel de l'application.

VSCode:
vscode
Hyper:
hyper

needs more info typbug

Tous les 4 commentaires

Merci d'avoir signalé @ christopher-tse. Je pense que nous aurons besoin d'un peu plus d'informations ici.

Pourriez-vous suivre les étapes suivantes et revenir avec les détails demandés:

  1. Réglez votre invite sur quelque chose de beaucoup plus simple, sans aucun code ANSI (par exemple PS1="\u:\w $ " ). Cela devrait vous donner un terminal noir et blanc typique
  2. Exécutez la commande suivante dans votre terminal (il devrait simplement afficher green test , avec green étant en fait vert 😅):
    echo -e "\033[1;32mgreen\033[0m test"
  3. Collez une capture d'écran du résultat ici. Ce que vous devriez voir est quelque chose comme ceci:
    image

Enfin, s'il existe un moyen de définir l'option debug du terminal xterm.js sur true dans VS Code et de renvoyer les journaux du terminal, ce serait également très utile. Ils devraient ressembler à ceci:

data: 
[1;32mgreen[0m test
www-data<strong i="21">@e167814701c2</strong>:/mnt/project $  undefined
Terminal.ts:1917 CSI  1;32  m undefined
Terminal.ts:1917 CSI  0  m undefined

PS: Pouvez-vous également envoyer la version particulière de l'hyper que vous utilisez? Hyper n'a pas encore intégré xterm.js (https://github.com/zeit/hyper/pull/1983), donc s'il s'agit d'un problème apparaissant à la fois dans les logiciels utilisant xterm.js et hyper.is, il s'agit probablement d'un problème de le sous-système Linux.

J'ai déjà vu cela lorsque vous avez des couleurs non standard dans cmd.exe. Si cela résout le problème, c'est un problème avec https://github.com/rprichard/winpty

@Tyriar Vous avez raison. J'ai dû changer la couleur d'arrière-plan dans le menu "Par défaut" de cmd.exe plutôt que dans le menu "Propriétés". Le réinitialiser à la couleur noire semble l'avoir corrigé.

@parisk Je suppose que vous n'aurez pas besoin des détails ci-dessus alors? Je serai ravi de prendre quelques captures d'écran si vous les aimez toujours.

@ christopher-tse cool, je vais fermer ceci car c'est un problème en amont. Les détails ne devraient pas être nécessaires 😃

Cette page vous a été utile?
0 / 5 - 0 notes