J'ai accidentellement vissé mon terminal tmux après l’installation d’ cat
un fichier binaire. Maintenant, mon tmux
est foiré. Détacher et ré-attacher ne sert à rien, pas plus qu’un redessin (Cb r). L'exécution reset
ne fait que redessiner le volet actif, pas le reste. Courir ssty sane
dedans ou dehors tmux
n'aide pas non plus.
Dans chaque volet, le retour que je tape est normal (l’appel initial reset
immédiatement après que le terminal se soit égaré a résolu ce problème), mais je n'arrive pas à corriger la barre d’état.
Dans gnome-terminal
, chaque mise à jour de la barre d'état entraîne la croissance de la barre d'état (voir la capture d'écran ci-dessus). Par exemple, cela se produit lorsque j'exécute une nouvelle application, lorsque je change de volet ou lorsque je redimensionne un volet. Forcer un rafraîchissement (Par C-b r
, en exécutant reset
ou via le menu gnome-terminal) réduit la barre d'état à une seule ligne, mais elle reste corrompue.
Dans xterm
, la barre d'état reste dans une ligne, mais elle reste corrompue comme sur la photo.
J'utilise tmux 1.5.
- Comment puis-je réparer mon
tmux
terminal?
Ce rapport de bogue de 2008 semble décrire le même problème, mais il a été marqué comme étant résolu. Je ne sais pas dans quelle version il a été corrigé, mais tmux 1.5 devrait inclure un correctif de 2008.
Control
+b
+:
, puisset -g status-right "#H"
de définir status-right sur le nom d'hôte.Réponses:
Essayez de renommer la fenêtre 4
(C'est une virgule au milieu)
Ou: Control+b
:rename-window myNewname
la source
ctrl+u
, donc la séquence complète estctrl+b , ctrl+u newname
byobu
aussi (f8, <newname>
)Control-u
nécessaire?Control-,
est-ce déjà renommer? Bien que je puisse confirmer que cela était nécessaire dans mon cas, s'agit-il d'un caractère de réinitialisation?Vous avez besoin de deux séquences de commandes pour nettoyer le désordre:
Tout d’abord, lancez ceci dans la fenêtre tronquée (cela fonctionne même lorsque vous êtes dans
ssh
):stty sane; printf '\033k%s\033\\\033]2;%s\007' "`basename "$SHELL"`" "`uname -n`"; tput reset; tmux refresh
Puis lancez ceci sur l'ordinateur qui tourne
tmux
(ça marche à l'intérieur et à l'extérieur detmux
):tmux list-windows -a | while IFS=: read -r a b c; do tmux set-window-option -t "$a:$b" automatic-rename on; done
Expliqué en détail
Cela a été assemblé pour traiter tous les éléments trouvés dans d'autres réponses et commentaires. Il semble actuellement qu’un peu mineur reste avec la deuxième commande. (Voir dans le "bit manquant" ci-dessous).
Pour comprendre comment cela fonctionne, supprimons d’abord la ligne d’état de
tmux
ettty
. Ensuite, nous corrigeons à nouveau, en utilisant une méthode qui devrait être toujours disponible (contrairement à commandreset
).Comment rendre un
tmux
terminalUTF-8
inutilisableA expliqué:
stty -echo
tue la réponse de type terminalprintf '\016'
fait unSO
, donc vous êtes sur le jeu de caractères alternatifprintf '\033]2;%s\007' 'right status text'
définit le bon statut, dans ce cas$'\355
', ce qui expose un bogue de présentationprintf '\033k%2000s\033\\' $'\302\217'
définit le nom du titre de la fenêtreC'est peut-être la combinaison que vous pouvez voir sur le terminal après qu'une commande interactive se soit écrasée puis replacée dans le shell. (Avec
/bin/cat
vous, vous ne pouvez pas provoquer unstty -echo
IMHO, mais des commandes interactives comme d'vim
habitude.)Maintenant, nettoyez ce gâchis
A expliqué:
stty sane
définit les paramètres terminaux "sains", de sorte que vous récupériez votre écho lors de la frappeprintf '\033k%s\033\\' "$(basename "$SHELL")"
remet le titre de la fenêtre à la normale. Vous pouvez utilisertmux rename-window "$(basename "$SHELL")"
alternativement, cependant,tmux rename-window
est limité à l'tmux
endroit où la séquence d'échappement fonctionne toujours.printf '\033]2;%s\007' "$(uname -n)"
réinitialise le status-droit à afficher par défaut. (Notez que vous ne devez pas utilisertmux set status-right "something"
, car il ne fait que sortir le fichierpane title
qui a été corrompu, cestatus-right
qui expose simplement un bogue de présentation. Notez également que je n'ai pas trouvé detmux
commande permettant de définir directement le titre du volet.)tput reset
réinitialise le terminal, juste au cas où cela aurait été dérangétmux refresh
rafraîchit l'écran pour se débarrasser des autres débris qui auraient pu apparaîtrePeu manquant
Le
printf '\033k%s\033\\' "$(basename "$SHELL")"
perd la capacité standard detmux
présenter la commande en cours dans la zone d’état de gauche. Après avoirprintf '\033k%s\033\\' "something"
été exécuté, cette capacité est perdue et je n’ai pas trouvé le bon moyen de le ramener tel qu’il était auparavant.Toutefois, comme indiqué dans les commentaires ci-dessous, vous pouvez activer une fonctionnalité similaire
tmux
en remplacement dutmux
paramètre suivant :Faites ceci dans la
tmux
ligne de commande, accessible dans la fenêtre actuelle avec "Escape":
(où "Escape" est latmux
clé de votre commande), puis entrez la commande.Ou exécutez
tmux set-window-option automatic-rename on
dans votre terminal actuel, mais cela échoue si vous n'êtes pas directement au bon niveau de shell, par exemple, cela ne fonctionne pas danssudo
oussh
.Ou ouvrez une autre fenêtre dans la
tmux
session en cours et exécutez la commande suivante:Ou ouvrez un autre shell sur l'ordinateur en cours d'exécution
tmux
et exécutez la commande suivante (en dehors de tmux):PS: Merci à tous ceux qui ont aidé à assembler cette solution.
la source
uname -n
au lieu dehostname -s
.hostname
est dangereux dans sonroot
contexte, car vous pourriez vous retrouver avec un hôte renommé-s
sur une ancienne Linux / Unix où leshostname
options ne sont pas disponibles.stty sane
partie m'a aidé lorsque mon terminal était foutu et n'a rien montré. Je vous remercie!set-window-option automatic-rename
.Le problème spécifique que vous voyez est lié au nom / titre de la fenêtre 4. Une combinaison d'être trop long (évidemment) et de contenir des caractères étranges qui font que tmux le mesure comme étant plus court (il ne parvient donc pas à limiter correctement la barre d'état largeur de l’écran). Je ne sais pas comment le réinitialiser (sur le mien, il suit le nom du processus de premier plan), vous devrez peut-être fermer la fenêtre.
la source
^b - ,
Ctrl
-b
alors,
.Backspace
pendant une minute pour effacer le nom actuel. Pour moi, les retours visuels ont finalement montré que tout l'ancien nom avait été effacé.Ctrl-b
:
rename-window <nom va ici>; ceci utilise le système de commande tmux au lieu du raccourci clavier pour cette commande.fais simplement ceci
$ reset && tmux rename-window <new_window_name>
la source
corrigé cela pour moi quand quelque chose d'autre que le nom de la fenêtre était corrompu et que je ne pouvais pas être dérangé de savoir ce que c'était.
la source
tmux
pourrait ne constituer qu'une partie du problème. Vous devrez peut-être faire appelstty sane
à la ligne de commande. Cela réinitialise les pilotes TTY dans le noyau sur un ensemble de valeurs par défaut qui vous permettent généralement de continuer. Si les pilotes de téléscripteur sont suffisamment compliqués, vous devrez peut-être taperstty sane
"aveugle", c'est-à-dire sans rétroaction à l'écran.la source
stty sane
ne résout pas le problème non plus. J'ai des commentaires à l'écran. Dans chaquetmux
panneau, je peux taper et avoir des commentaires comme d'habitude, mais dès que tmux doit dessiner quelque chose (par exemple, exécuter une nouvelle application, changer de panneau ou le redimensionner), la barre d'état se déplace dans les panneaux. ...Essayez de recharger votre fichier de configuration?
Ctrlb, puis:
:source-file ~/.tmux.conf
la source
pour résoudre le problème pour moi:
Je viens de tuer le volet et la fenêtre du problème et j'ai créé une nouvelle fenêtre et un nouveau volet.
Dans le volet des problèmes, CTRL+ AXet CTRL+ AC.
la source