Configurando teclas de função no PuTTY para o Vim e o Midnight Commander no tmux?


10

Primeiro, estou ciente de que posso usar Alt+ 1(até 9 e 0) para sintetizar as respectivas teclas de função ( F1até F10) no Midnight Commander. Isso me ajudou muitas vezes, mas, por padrão, ainda pressiono as teclas de função reais intuitivamente.

Gist: Estou tentando executar o Vim e o Midnight Commander dentro de uma tmuxsessão (às vezes janela, às vezes painel), usando PuTTY.

Portanto, por padrão, tenho a seguinte configuração PuTTY:

Configuração do teclado PuTTY

Com ESC[n~mapeamento

O problema agora ao mapear ( map <F1> :tab help<CR>, e também nmape imap) F1no Vim é que ele fornece o efeito de ~(alternar maiúsculas e minúsculas). E, de fato, se eu pressionar F1através F5do shell, o til ( ~) é o resultado, juntamente com um sino. As teclas de função funcionam perfeitamente bem no Midnight Commander, no entanto, usando esta configuração.

Há uma coisa estranha na configuração acima, além dos meus problemas com F1: Eu também "mapeei" F5( set pastetoggle=<F5>) no Vim. Estranhamente , que funciona como um encanto, mesmo que a F5chave na casca dá um ~como F1etc.

Nota: ao executar o Vim fora de tmux, a ligação padrão (e minha substituição) F1funciona bem!

Com o mapeamento "Linux"

Então, naturalmente, tentei usar a configuração "Linux" na caixa de diálogo acima. Então, quando eu pressiono F1Vim, entra no modo de inserção no final da linha (efeito de A). O Midnight Commander não reconhece nenhuma tecla de função com essa configuração. Com certeza na concha F1me dá Ae um sino ( F2a Be assim por diante).

O que estou perdendo aqui? Como posso obter um comportamento uniforme em que o Midnight Commander e o Vim reconhecerão as teclas de função?


Informação adicional:

O sistema remoto é o Ubuntu 14.04 com LANG=en_US.UTF-8.

TERMestá definido como TERM=xtermfora da tmuxsessão e TERM=screenquando visto de dentro de um painel ou janela.

Eu não estou usando:

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

para substituir o tipo de terminal interno tmux.

Respostas:


8

O problema é do TERM=xtermlado de fora tmux. Não existe uma configuração do PuTTY que corresponda à xtermdescrição do terminal, e a incompatibilidade é alimentada screenou tmux(faça sua escolha).

Veja, por exemplo, nas Perguntas frequentes sobre ncurses Por que não usar TERM definido como "xterm"? . É claro que a recomendação é definir

TERM=putty

Uma verificação rápida usando tackmostra que esta combinação ( TERM=putty, tmux) funciona no Ubuntu 14.04 (você deve ter instalado o ncurses-termpacote, que inclui isso).


Obrigado. Na verdade, não consegui encontrar tack, nem com apt-file searchnem após a instalação do pacote que você recomendou. Mas toe -a|grep -i puttyconfirma que existem várias definições de terminal PuTTY (incluindo a putty-256color). Vou experimentá-lo e responder a você e também aceitá-lo de acordo.
0xC0000022L

Eu não tinha notado que o tack não estava no Ubuntu 14.04 (já está no Debian há algum tempo, mas provavelmente esqueci quando o dividi do tarball da fonte ncurses). Verificando minha máquina, parece que eu estava executando um dos meus pacotes.
Thomas Dickey 23/05
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.