Je suis aux prises avec ce problème depuis quelque temps déjà, et c’est vraiment énervant, mais je ne peux pas comprendre ce qui ne va pas. Que je sois sur Terminal.app ou iTerm2 lorsque je démarre une session tmux sur mon terminal, il y a toujours un espace étrange entre l’invite et le texte que je tape, environ 3 fois l’espace que j’ai à l’extérieur de tmux. Ce ne serait pas un gros problème en soi, mais lorsque j'essaie d'appuyer sur la touche Retour arrière pour supprimer quelque chose ou que j'utilise le mode vi (zsh) pour modifier quelque chose, le curseur s'affiche comme si le texte était à la bonne position (la manière dont il est affiché à l'extérieur). tmux) mais le texte est au mauvais endroit, il est donc impossible de savoir ce que je suis en train de modifier. De plus, lorsque j'appuie sur Entrée, le texte clignote à la bonne position, mais cela n'est pas vraiment utile à ce stade.
J'ai essayé de signaler le type $ TERM avec différentes options au démarrage de tmux, mais aucun ne semble le rendre meilleur.
Est-ce que quelqu'un sait ce que le problème pourrait être?
EDIT: C’est mon $ PROMPT / $ PS1:% {$ fg_bold [rouge]%}% {$ fg_bold [vert]%}% p% {$ fg [cyan]%}% c $ {$ fg_bold [bleu] %} $ (git_prompt_info)% {$ fg_bold [blue]%}%% {$ reset_color%}
utf8
option window est-elle activée pour vos fenêtres tmux ?set-option -g status-utf8 on
setw -g utf8 on
. En ce qui concerne les caractères multi-octets, comment dois-je vérifier cela?utf8
éteint, son idée de la position du curseur et celle du terminal externe la position sera différente; zsh demande la position du curseur, il est donc sensible à cet écart (qui apparaît sous forme d'espaces supplémentaires à la fin de son invite). Vous voudrez peut-être modifier votre question pour inclure votre valeur réelle PROMPT / PS1.utf8
cette fenêtre (bien que la valeur globale soit activée )? Je vois certainement des espaces supplémentaires lors de l’utilisation de votre valeur PROMPT si j’utiliseset utf8 off
la fenêtre. Quetmux show -w utf8 \; show -gw utf8
montre dans une fenêtre que vous rencontrez des problèmes?Réponses:
Je l' ai vu un problème comme celui - ci lors de l' utilisation des caractères multi-octets (codées UTF-8) dans l'invite, mais seulement quand tmux l »
utf8
option de fenêtre est désactivée.Pour identifier de tels caractères, recherchez des formes «fantaisistes», des symboles spéciaux ou des caractères accentués en dehors du répertoire ASCII (c'est-à-dire tout point de code Unicode supérieur à U + 007F).
Pour vérifier si l'
utf8
option est active, utilisez cette commande dans une fenêtre présentant le problème:(ou à l' invite de tmux
:
sans les majusculestmux
et sans la barre oblique inversée)Si deux valeurs sont affichées, la seconde est la valeur active pour cette fenêtre. La première (ou la seule) valeur est la valeur globale qui sera utilisée s'il n'y a pas de valeur window-local établie.
Si vous voyez une valeur différente de celle établie par votre fichier de configuration, vous devrez probablement redémarrer votre serveur (ou si les modifications apportées par votre fichier de configuration sont idempotentes, vous pouvez le
source
faire:)tmux source ~/.tmux.conf
.Le problème se pose car (sans cette option
utf8
) tmux et votre émulateur de terminal externe ont une idée différente du nombre de colonnes utilisées pour afficher chaque caractère multi-octets. tmux s'attend à ce qu'un caractère multi-octets occupe plusieurs colonnes (une par octet), mais votre émulateur externe est probablement configuré pour le reconnaître en tant que caractère UTF-8 unique et le restituera ainsi dans une colonne unique.Le problème est particulièrement visible dans une invite zsh , car zsh veille à bien situer le curseur afin de savoir à quel moment la ligne sera rompue et ce qu'il faut faire pour redessiner correctement l'invite. Malheureusement, le décalage entre (non
utf8
) tmux et l'émulateur externe (configuré avec UTF-8) amène tmux à signaler une position du curseur de plusieurs colonnes à droite de la position attendue (un espace supplémentaire pour chaque octet supplémentaire de chaque caractère multi-octets). dans l'invite).L'activation
utf8
dans tmux corrige le problème car tmux et l'émulateur externe reconnaîtront les séquences de chaque point de code UTF-8 multi-octets comme occupant une seule colonne. Reconfiguration votre émulateur externe pour utiliser un codage sur un seul octet serait également corriger l'écart, mais au prix de ne pas être en mesure d'afficher correctement les données codées UTF-8 (bien que ce point de vue ne montre essentiellement vous ce que tmux est « pensée » quandutf8
est de).la source
tmux list-sessions
et j’ai tout simplement mis fin au processus tmux. Tmux ne recharge le fichier tmux.conf qu'au redémarrage du serveur, donc mes modifications sur la conf n'étaient pas en cours de chargement.tenc
,fenc
,enc
, etc.) et éventuellement votre environnement (par exemple LANG, LC_CTYPE, etc.).J'ai eu exactement la même erreur dans Terminal.app. Ce qui a résolu le problème pour moi, c’est d’aller dans "paramètres / paramètres / avancé" et de changer "Déclarer le terminal comme" en xterm-256color. Aucune idée pourquoi :)
la source