tmux na máquina remota que não está recebendo prefixo + teclas de seta corretas

1

Estou conectando de uma máquina Windows a uma máquina remota usando o MobaXterm e conecto a uma sessão do tmux. Algumas chaves não estão sendo enviadas corretamente, por exemplo, prefixo + teclas de seta imprimem {A, B, C, D} quando eu pressiono o prefixo + {cima, baixo, direita, esquerda}, quando essas teclas devem navegar entre painéis tmux. Se eu usar o Putty (em vez do MobaXterm), posso consertar isso usando o terminal 'linux' em vez de 'xterm', mas no MobaXterm os tipos de terminais que eu posso escolher são xterm, xterm-r6, vt100, vt220 e vt900. Nenhum deles funciona.

Eu acho que parte do problema é a própria máquina remota (que roda o Ubuntu 16.04), porque outras máquinas remotas não têm esse problema.

Alguma sugestão?

    
por Itamar Katz 06.07.2016 / 10:32

2 respostas

1

Existem diferenças não relacionadas entre o Red Hat 6 e o Ubuntu 16 para a entrada screen-256color : o último adiciona dim e omite initc . Nenhuma dessas alterações está relacionada a teclas de cursor.

Presumivelmente, o valor de TERM fora tmux é xterm . Também há alterações não relacionadas entre os dois sistemas para a entrada xterm (as extensões de cor do cursor mencionado no banco de dados do terminal).

No entanto, há uma diferença significativa entre as entradas linux e xterm : as entradas xterm (em ambos os casos) inicializam o terminal para usar modo de aplicação para cursor e teclado -chaves, enquanto que para linux não. O modo de aplicação envia sequências de caracteres diferentes para as teclas do cursor (que é o ponto desta questão).

O Red Hat 6 tem o tmux 1.6, o Ubuntu 16 tem o tmux 2.3. Em ambos os casos, tmux lê a descrição do terminal e tenta para combinar as seqüências de escape enviadas pelas teclas de função e cursor do terminal fora , e armazena sua noção daquelas chaves (como um código de acesso e informações de controle / mudança) antes de gerar uma seqüência de escape equivalente que segue a descrição do terminal tmux

.

Se o arquivo .tmux.conf tiver configurações conflitantes, conforme mostrado em Ctrl + teclas de seta trabalhando no tmux , então os programas tmux bastante antigos e bastante novos serão diferentes para as teclas de cursor modificadas:

  • no CentOS6, mudado para cima, dá ^[[A^[[1;2A , enquanto o Ubuntu mostra ^[[A .
  • control-uparrow também difere.

O motivo da diferença é (na verdade) uma melhoria em tmux , para ler as definições de chave estendidas do banco de dados de terminal. Na versão mais antiga, tmux não percebeu que as chaves do estilo xterm não estavam definidas na descrição do terminal screen-256color . Então passou a informação. Na versão mais recente, tmux vê que eles não estão definidos e (porque foi informado que está ciente das chaves xterm), usa apenas aqueles que são definidos na descrição do terminal especificada. / p>

Leitura adicional:

por 07.07.2016 / 02:34
0

Pode ser uma chave de prefixo conflitante, então você pode tentar mudar isso. O Tmux permite isso, e você pode persistir criando um arquivo ~/.tmux.conf .

A linha a ser adicionada ao arquivo conf seria algo assim:

set-option -g prefix M-a

O que mudaria sua chave de prefixo para Alt + A

Se você não quiser que essas mudanças persistam, você pode simplesmente executar essa linha como um comando a partir do tmux.

Aqui está um pouco sobre a sintaxe correta para isso (tirada da man page):

KEY BINDINGS
    tmux allows a command to be bound to most keys, with or without a prefix key.  When specifying keys, most represent them-
     selves (for example ‘A’ to ‘Z’).  Ctrl keys may be prefixed with ‘C-’ or ‘^’, and Alt (meta) with ‘M-’.  In addition, the
     following special key names are accepted: Up, Down, Left, Right, BSpace, BTab, DC (Delete), End, Enter, Escape, F1 to F12,
     Home, IC (Insert), NPage/PageDown/PgDn, PPage/PageUp/PgUp, Space, and Tab.  Note that to bind the ‘"’ or ‘'’ keys, quotation
     marks are necessary, for example:
    
por 07.07.2016 / 02:36