Cuando intento cambiar paneles en tmux con ctrl + b, tmux imprime esporádicamente el código de carácter correspondiente [A, [B, [C o [D] en lugar de cambiar paneles.
Puedo hacer esto repetidamente, exactamente de la misma manera, el 75% del tiempo que cambiará correctamente y el otro 25% el tiempo que imprimirá el código de caracteres.
ctrl+b <up arrow> prints [A
ctrl+b <down arrow> prints [B
ctrl+b <right arrow> prints [C
ctrl+b <left arrow> prints [D
Estoy usando cygwin conectado a Linux Mint. Tmux se ejecuta en Linux mint, y el shell que estoy usando es bash.
Editar: para que esta pregunta sea más fácil de buscar, agregaré estas palabras clave:
Los códigos de caracteres de las salidas de terminal abren el soporte A, abre el soporte B, abre el soporte C, abre el soporte D.
¿Algunas ideas?
Respuestas:
Parece que tmux 's
escape-time
está un poco bajo para la calidad de conexión que tiene entre su sistema Cygwin y el sistema Linux.Muchos terminales generan la secuencia de tres bytes ESC
[
B
para la tecla de flecha hacia abajo. Laescape-time
configuración le dice a tmux cuánto tiempo debe esperar una secuencia completa después de recibir el ESC; si el tiempo se agota sin recibir una secuencia completa, tmux tratará los bytes individuales como pulsaciones de teclas individuales (tratando Cb ESC como una tecla tmux independiente y pasando[B
al tty del panel activo).Entonces, o ha
escape-time
establecido un valor muy bajo (que probablemente funciona bien cuando accede a tmux a través de conexiones estrictamente locales), o la conexión entre las dos máquinas a veces termina un poco más allá de suescape-time
valor. Puede consultar el valor actual con el comandotmux show-options -s | grep escape-time
.El valor predeterminado es 500 milisegundos; Esto debería funcionar bien en la mayoría de las situaciones, pero podría ser demasiado corto para conexiones marginales. Puede intentar aumentar el valor de
escape-time
:Puede poner esto en su
~/.tmux.conf
archivo, ejecutarlo como untmux
comando en un shell dentro de una sesión tmux , o escribirlo directamente en el indicador tmux (abierto con Cb:
). Nota: Los cambios realizados~/.tmux.conf
no tendrán efecto hasta que vuelva a grabarsource
el archivo o reinicie su servidor tmux .fuente
[
se ignora (no está vinculado en lavi-edit
tabla) yD
es eldelete-end-of-line
comando. No hubiera esperado que unaescape-time
subida empeorara el problema de la secuencia de escape interrumpido; sin embargo, haría que los enlaces de estilo vi sean inconvenientes: siempre tendrá que esperar aescape-time
que transcurra después de presionar la tecla ESC (es decir, para salir del modo de inserción) y antes de comenzar a escribir comandos de modo normal (por ejemplo,b
para retroceder una palabra) .[
D
, pero se detiene después del primer byte. Si esto ocurre después de su Prefix, el ESC principal se "come" como una combinación de teclas enlazables (Prefix ESC). En el modo de edición de línea de comando vi- style se "come" como la tecla vi para volver al modo normal. Cuando está escribiendo en un tty (por ejemplo, bash en tmux ), el ESC nunca se "come", simplemente lo envía al tty subyacente como una tecla "separada"; Si el proceso de escucha ( bash ) no es tan exigente con Escape vs. inicio de secuencia, simplemente esperará el[D
y lo tratará como una flecha izquierda.Estoy teniendo este problema también; definitivamente es específico para las teclas de flecha (y probablemente cygwin) Por el momento, decidí desvincular las teclas de flecha y mover los comandos del panel de selección a otra parte, y los nuevos enlaces de teclas funcionan perfectamente. Sin embargo, no es una solución muy satisfactoria. Me encantaría saber si alguien se da cuenta de lo que está sucediendo.
fuente