Accidentalmente arruino mi terminal tmux después cat
de crear un archivo binario. Ahora mi tmux
está en mal estado. Separar y volver a unir no ayuda, ni tampoco volver a dibujar (Cb r). La ejecución reset
solo vuelve a dibujar el panel activo, no el resto. Correr ssty sane
dentro o fuera tmux
tampoco ayuda.
Dentro de cada panel, tengo comentarios normales de lo que escribo (la llamada inicial de reset
inmediatamente después de que el terminal se estropeó resolvió esto), pero parece que no puedo arreglar la barra de estado.
En gnome-terminal
, cada actualización de la barra de estado lleva a la barra de estado a crecer (ver captura de pantalla arriba). Por ejemplo, esto sucede cuando ejecuto una nueva aplicación, cuando cambio paneles o cuando cambio el tamaño de un panel. Forzar un redibujo (Por C-b r
, al ejecutar reset
o mediante el menú gnome-terminal) reduce la barra de estado a una sola línea, pero permanece dañada.
En xterm
, la barra de estado permanece dentro de una línea, pero permanece corrupta como se muestra en la imagen.
Estoy usando tmux 1.5.
- ¿Cómo arreglo mi
tmux
terminal?
Este informe de error de 2008 parece describir el mismo problema, pero se marcó como solucionado. No sé en qué versión se solucionó, pero tmux 1.5 debería incluir una solución de 2008.
Control
+b
+:
y luegoset -g status-right "#H"
establecer el derecho de estado al nombre de host.Respuestas:
Intente renombrar la ventana 4
(Eso es una coma en el medio)
O: Control+b
:rename-window myNewname
fuente
ctrl+u
, por lo que la secuencia completa esctrl+b , ctrl+u newname
byobu
(f8, <newname>
)Control-u
necesario?Control-,
ya está cambiando de nombre ¿verdad? Aunque puedo confirmar que era necesario en mi caso, ¿es algún tipo de reinicio?Necesita dos secuencias de comandos para limpiar el desorden:
Primero, ejecute esto en la ventana ilegible (esto funciona incluso cuando está dentro
ssh
):stty sane; printf '\033k%s\033\\\033]2;%s\007' "`basename "$SHELL"`" "`uname -n`"; tput reset; tmux refresh
Luego ejecute esto en la computadora que funciona
tmux
(funciona dentro y fuera detmux
):tmux list-windows -a | while IFS=: read -r a b c; do tmux set-window-option -t "$a:$b" automatic-rename on; done
Explicado en detalle
Esto fue ensamblado para abordar todos los bits encontrados en otras respuestas y comentarios. Actualmente parece que solo queda un poco con el segundo comando. (Ver en el "bit faltante" a continuación).
Para entender cómo funciona esto, primero eliminemos la línea de estado de
tmux
y eltty
. Luego lo corregimos nuevamente, usando un método que siempre debe estar disponible (a diferencia del comandoreset
).Cómo hacer que un
tmux
terminal (se suponeUTF-8
) sea inutilizableExplicado:
stty -echo
mata la respuesta de tipo terminalprintf '\016'
hace unSO
, así que estás en el conjunto de caracteres alternativoprintf '\033]2;%s\007' 'right status text'
establece el estado correcto, en este caso$'\355
', que expone un error de presentaciónprintf '\033k%2000s\033\\' $'\302\217'
establece el nombre del título de la ventanaEsta podría ser la combinación que puede ver en el terminal después de que un comando interactivo se bloqueó y volvió a caer en el shell. (Con
/bin/cat
usted no puede provocarstty -echo
IMHO, pero los comandos interactivos como por lovim
general configuran esto).Ahora limpia este desastre
Explicado:
stty sane
establece parámetros de terminal "sanos" para que recuperes tu eco mientras escribesprintf '\033k%s\033\\' "$(basename "$SHELL")"
configura el título de la ventana de nuevo a la normalidad. Puede usartmux rename-window "$(basename "$SHELL")"
alternativamente, sin embargo,tmux rename-window
está limitado atmux
donde la secuencia de escape siempre funciona.printf '\033]2;%s\007' "$(uname -n)"
restablece el derecho de estado para que se muestre como predeterminado. (Tenga en cuenta que no debe usarlotmux set status-right "something"
, ya que solo genera elpane title
que se corrompió, por lo questatus-right
solo expone algún error de presentación. También tenga en cuenta que no encontré untmux
comando para establecer el título del panel directamente).tput reset
restablece el terminal, en caso de que esto se haya estropeadotmux refresh
actualiza la pantalla para deshacerse de otros desechos que podrían haber aparecidoPedazo perdido
La
printf '\033k%s\033\\' "$(basename "$SHELL")"
pierde la capacidad estándar detmux
presentar el comando actual en el área de estado de la izquierda. Después de queprintf '\033k%s\033\\' "something"
se ejecutó esta habilidad se perdió y no encontré una buena manera, sin embargo, cómo recuperarla como estaba antes.Pero, como se señala en los comentarios a continuación, puede activar una función similar
tmux
como reemplazo con la siguientetmux
configuración:Haga esto en la
tmux
línea de comando, que se puede alcanzar en la ventana actual con "Escape":
(donde "Escape" es sutmux
tecla de comando) y luego ingrese el comando.O ejecute
tmux set-window-option automatic-rename on
en su terminal actual, pero esto falla en caso de que no esté directamente en el nivel de shell correcto, por ejemplo, no funciona dentro desudo
ossh
.O abra otra ventana en la
tmux
sesión actual y ejecute el siguiente comando:O abra otro shell en la computadora que se está ejecutando
tmux
y ejecute el siguiente comando (esto está fuera de tmux):PD: Gracias a todos los que ayudaron a armar esta solución.
fuente
uname -n
lugar dehostname -s
.hostname
es peligroso en suroot
contexto, ya que podría terminar con el cambio de nombre de su host-s
en Linux / Unix, dondehostname
no hay opciones de grok.stty sane
parte me ayudó cuando mi terminal se estropeó y no mostró nada. ¡Gracias!set-window-option automatic-rename
.El problema específico que está viendo tiene que ver con el nombre / título de la ventana 4. Una combinación de ser demasiado largo (obviamente) y contener caracteres extraños que hacen que tmux lo mida como más corto (por lo que no puede limitar adecuadamente la barra de estado al ancho de la pantalla) No estoy seguro de cómo restablecerlo (en el mío sigue el nombre del proceso en primer plano), es posible que deba cerrar la ventana.
fuente
^b - ,
Ctrl
-b
entonces,
.Backspace
durante un minuto para borrar el nombre actual. Para mí, la retroalimentación visual eventualmente dejó en claro que todo el antiguo nombre había sido borrado.Ctrl-b
:
rename-window <nombre va aquí>; esto usa el sistema de comando tmux en lugar del atajo de teclado para ese comando.simplemente haz esto
$ reset && tmux rename-window <new_window_name>
fuente
Me arregló esto cuando algo más que el nombre de la ventana estaba dañado y no podía molestarme en averiguar qué era.
fuente
tmux
podría constituir solo parte del problema. Puede que tenga que invocarstty sane
en la línea de comando. Esto restablece los controladores TTY en el núcleo a un conjunto de valores predeterminados que generalmente le permiten continuar. Si los controladores TTY están lo suficientemente desordenados, es posible que deba escribirstty sane
"a ciegas", es decir, sin comentarios en pantalla.fuente
stty sane
tampoco resuelve el problema. Tengo comentarios en pantalla, dentro de cada uno de lostmux
paneles puedo escribir y tener comentarios de manera normal, pero tan pronto como tmux necesita dibujar algo (por ejemplo, ejecutar una nueva aplicación, cambiar o cambiar el tamaño de los paneles) la barra de estado se mueve a los paneles ...Intenta recargar tu archivo de configuración?
Ctrlb, luego:
:source-file ~/.tmux.conf
fuente
para solucionar el problema para mí:
Acabo de eliminar el panel y la ventana del problema, y creé una nueva ventana y panel.
En el panel de problemas, CTRL+ AXy CTRL+ AC.
fuente