L'entrée du terminal ne s'emballe pas du tout ou pas du tout

15

Depuis un moment maintenant, j'ai eu ce problème persistant sur tous mes terminaux, du gnome par défaut et tilda que j'utilise tous les deux à ceux que je viens de donner un tourbillon rapide, où mon entrée écrasera le début de sa propre ligne quand il le devrait envelopper et envelopper uniquement sur la ligne suivante.

Appuyer sur Ctrl-A pour revenir au début de la ligne me renverra à la place quelque part dans la ligne avant ma première ligne d'entrée, à partir de laquelle toute entrée devient très bizarre.

Parce que c'est une très mauvaise explication et difficile à visualiser, voici à quoi cela ressemble:

Screencap: test de retour à la ligne

Est-ce que quelqu'un sait ce que c'est? Cela ne se produit pas seulement dans certaines circonstances, c'est une chose permanente qui est toujours présente du début à la fin de chaque session dans chaque émulateur de terminal.

Sortie de printf "%s\n" "$PS1" "$COLUMNS":

leod:~$ printf "%s\n" "$PS1" "$COLUMNS"
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ 
80

Sortie de stty -a:

leod:~$ stty -a
speed 38400 baud; rows 11; columns 140; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z;
rprnt = ^R; werase = ^W; lnext = ^V; discard = ^O; min = 1; time = 0;
-parenb -parodd -cmspar cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke -flusho -extproc
leod
la source
3
Ajoutez la sortie de printf "%s\n" "$PS1" "$COLUMNS", s'il vous plaît.
muru
Il se peut que votre programme testlaisse le terminal dans un état instable. Si c'est un script, pouvez-vous l'inclure dans votre question? Que se passe-t-il si vous commencez à taper sans exécuter d' testabord, le texte s'habille-t-il normalement?
WinEunuuchs2Unix
1
Pouvons-nous voir aussi la sortie de stty -as'il vous plaît?
steeldriver
1
@ WinEunuuchs2Unix mauvais test (jeu de mots voulu). Essayez type -a testplutôt.
muru le
1
Quelle est la sortie de printf "%q\n" "$PS1"? Il peut y avoir des séquences d'échappement brutes à l'intérieur de PS1 et les %slaisse intactes (ce qui pourrait par exemple changer la couleur d'avant en arrière qui reste inaperçue dans la sortie). %qcite chaque caractère non imprimable d'une manière lisible.
egmont

Réponses:

7

Il est possible que votre terminal ne reconnaisse pas correctement la taille de la fenêtre. J'ai trouvé une question connexe dans U&L Stackexchange , et quelqu'un a suggéré la méthode ci-dessous pour vérifier si c'est ce qui se passe:

Type

shopt | grep checkwinsize

Si la sortie n'est pas:

checkwinsize    on

Vous pouvez utiliser

shopt -s checkwinsize

activer. Pour désactiver:shopt -u checkwinsize

Hee Jin
la source
1
Peut-être que je n'ai pas testé assez mais mon l' checkwinsizeétait déjà on. J'avais l'habitude shopt -u checkwinsizede le désactiver et mon terminal encapsulait toujours le texte correctement. Je ne sais pas si cette réponse résout vraiment le problème OP.
WinEunuuchs2Unix
Brillant. C'est le correctif dont j'avais besoin. L'habillage de la ligne de commande fonctionne parfaitement maintenant avec plus de 80 caractères.
Randy
@Randy Heureux d'entendre que cela a fonctionné pour vous!
Hee Jin