¿Configurar teclas de función en PuTTY para Vim y Midnight Commander en tmux?

10

En primer lugar, soy consciente de que puedo usar Alt+ 1(a través de 9 y 0) para sintetizar las teclas de función respectivas (a F1través F10) en Midnight Commander. Me ha ayudado muchas veces, pero por defecto Todavía presionar las reales teclas de función intuitiva.

Gist: Estoy tratando de ejecutar Vim y Midnight Commander dentro de una tmuxsesión (a veces ventana, a veces panel), usando PuTTY.

Entonces, por defecto tengo la siguiente configuración PuTTY:

Configuración de teclado PuTTY

Con ESC[n~mapeo

El problema ahora al mapear ( map <F1> :tab help<CR>, y también nmapy imap) F1en Vim, es que da el efecto de ~(alternar mayúsculas y minúsculas). Y de hecho si presiono F1a través F5en la cáscara, la tilde ( ~) es el resultado, a lo largo con una campana. Sin embargo, las teclas de función funcionan perfectamente bien en Midnight Commander, utilizando esta configuración.

Hay una cosa extraña acerca de la configuración anterior, además de mis problemas con F1: También "mapeé" F5( set pastetoggle=<F5>) en Vim. Curiosamente, eso funciona como un encanto, a pesar de que la F5llave en el caparazón da un me ~gusta, F1etc.

Nota: cuando se ejecuta Vim fuera de tmux, el enlace predeterminado (y mi anulación) F1funciona bien.

Con mapeo "Linux"

Así que, naturalmente, traté de usar la configuración "Linux" en el cuadro de diálogo anterior. Entonces cuando F1presiono Vim entra en modo de inserción al final de la línea (efecto de A). Midnight Commander no reconoce ninguna de las teclas de función con esta configuración. Efectivamente en la cáscara F1me da Ay una campana ( F2una By así sucesivamente).

¿Que me estoy perdiendo aqui? ¿Cómo puedo obtener un comportamiento uniforme donde Midnight Commander y Vim reconocerán las teclas de función?


Información adicional:

El sistema remoto es Ubuntu 14.04 con LANG=en_US.UTF-8.

TERMse establece TERM=xtermfuera de la tmuxsesión y TERM=screencuando se ve desde el interior de un panel o ventana.

No estoy usando:

set-option -g default-terminal "screen-256color"

para anular el tipo de terminal dentro tmux.

0xC0000022L
fuente

Respuestas:

8

El problema es el TERM=xtermexterior tmux. No hay una configuración de PuTTY que coincida con la xtermdescripción del terminal, y la falta de coincidencia alimenta screeno tmux(elige).

Ver, por ejemplo, en las preguntas frecuentes de ncurses ¿Por qué no usar TERM solo configurado en "xterm"? . La recomendación, por supuesto, es establecer

TERM=putty

Una comprobación rápida usando tackmuestra que esta combinación ( TERM=putty, tmux) funciona para Ubuntu 14.04 (debería haber instalado el ncurses-termpaquete, que incluye esto).

Thomas Dickey
fuente
Gracias. En realidad no pude encontrar tacknada, ni con apt-file searchni después de la instalación del paquete que me recomendó. Pero toe -a|grep -i puttyconfirma que existen varias definiciones de terminal PuTTY (incluido a putty-256color). Lo intentaré y me pondré en contacto contigo y también aceptaré en consecuencia.
0xC0000022L
No me había dado cuenta de que la táctica no estaba en Ubuntu 14.04 (ha estado en Debian hace un tiempo, pero probablemente se me pasó por alto cuando lo separé del tarball fuente ncurses). Al revisar mi máquina, parece que estaba ejecutando uno de mis paquetes.
Thomas Dickey