Les deux premiers caractères ont été répétés pendant que j'utilise Tabpour terminer. Dans la capture d'écran ci-dessous, cd
est répété.
J'ai essayé rxvt-unicdoe, xterm, terminator. Tous ces émulateurs de terminaux ont ce problème.
Zsh version 5.0.2, fichier de configuration on-my-zsh
zsh
line-editor
oh-my-zsh
jilen
la source
la source
Réponses:
Si les caractères sur votre ligne de commande sont parfois affichés avec un décalage, c'est souvent parce que zsh a calculé la mauvaise largeur pour l'invite. Les symptômes sont que l'affichage semble correct tant que vous ajoutez des caractères ou déplacez caractère par caractère, mais devient tronqué (certains caractères apparaissant plus à droite qu'ils ne le devraient) lorsque vous utilisez d'autres commandes qui déplacent le curseur ( Home, achèvement, etc. ) ou lorsque la commande chevauche une deuxième ligne.
Zsh doit connaître la largeur de l' invite pour savoir où sont placés les caractères de la commande. Il suppose que chaque personnage occupe une position, sauf indication contraire.
Une possibilité est que votre invite contienne des séquences d'échappement qui ne sont pas correctement délimitées. Les séquences d'échappement qui modifient la couleur ou d'autres aspects de mise en forme du texte, ou qui modifient le titre de la fenêtre ou d'autres effets, ont une largeur nulle. Ils doivent être inclus dans une construction à accolades en pourcentage
%{…%}
. Plus généralement, une séquence d'échappement comme%42{…%}
dit à zsh de supposer que ce qui se trouve à l'intérieur des accolades fait 42 caractères de large.Vérifiez donc vos paramètres rapides (
PS1
,PROMPT
ou les variables auxquels ils font référence) et assurez - vous que toutes les séquences d'échappement ( par exemple\e[…m
au texte de modifier les attributs - Notez qu'il peut être présent via une variable comme$fg[red]
) sont à l' intérieur%{…%}
. Puisque vous utilisez oh-my-zsh, vérifiez à la fois vos propres paramètres et les définitions que vous utilisez de oh-my-zsh.Le même problème se pose dans bash. Il faut y inclure des séquences de largeur nulle dans une invite
\[…\]
.Une autre possibilité est que votre invite contienne des caractères non ASCII et que zsh (ou toute autre application) et votre terminal aient une idée différente de leur largeur. Cela peut se produire s'il y a une incompatibilité entre l'encodage de votre terminal et l'encodage déclaré dans le shell, et les deux encodages entraînent des largeurs différentes pour certaines séquences d'octets. En règle générale, vous pouvez rencontrer ce problème lors de l'utilisation d'un terminal non Unicode mais en déclarant un environnement local Unicode ou vice versa.
Les applications s'appuient sur des variables d'environnement pour connaître les paramètres régionaux; le paramètre pertinent est
LC_CTYPE
, ce qui est déterminé à partir des variables d'environnementLANGUAGE
,LC_ALL
,LC_CTYPE
etLANG
(le premier de ceux - ci qui est mis en applique). La commandelocale | grep LC_CTYPE
vous indique votre paramètre actuel. Habituellement, le meilleur moyen d'éviter les problèmes de localisation est de laisser l'émulateur de terminal définiLC_CTYPE
, car il sait quel codage il attend; mais si cela ne fonctionne pas pour vous, assurez-vous de réglerLC_CTYPE
.Les mêmes symptômes peuvent se produire lorsque la commande précédente a affiché une sortie qui ne s'est pas terminée par une nouvelle ligne, de sorte que l'invite s'affiche au milieu de la ligne mais que le shell ne s'en rend pas compte. Dans ce cas, cela ne se produirait qu'après l'exécution d'une telle commande, pas de manière persistante.
Si une ligne ne s'affiche pas correctement, la commande
redisplay
ouclear-screen
(liée à Ctrl+ Lpar défaut) la corrigera.la source
->
ce que ce soitlocale
et deecho $PS1 | od -t x1
(et la même chose avec toute autre variable utilisée par$PS1
).\e{7,8}
pour enregistrer / restaurer les états du curseur.LC_CTYPE
problème qui l'a réparé pour moi. Je l'avais réglé surC
, quand je l'ai désarmé, tout a fonctionné. Merci.J'ai eu le même problème et j'ai trouvé ma solution ici: https://github.com/robbyrussell/oh-my-zsh/issues/5157#issuecomment-226031519 . Mettez simplement ce qui suit dans votre
~/.zshrc
.export LC_CTYPE=en_US.UTF-8
la source
locale
mais cela a fonctionné pour moi. Cette réponse fournit les étapes nécessaires pour Ubuntu.J'ai eu ce problème dans iTerm 2 sur macOS. J'ai fini par le résoudre en allant dans Préférences -> Profils -> Texte et en cochant "Utiliser les largeurs Unicode version 9".
la source
J'ai ce problème en utilisant ubuntu lts docker image (
ubuntu:latest
). Je l'ai corrigé avec les instructions fournies sur la page correspondante: https://hub.docker.com/_/ubuntula source