Pergunta

vim parece enviar vários itens estranhos (ou seja,não documentado) sequências de escape para o terminal subjacente ao usar o esquema inkpot.Não consegui combiná-los com nenhum código de escape VT-100 ou ANSI;alguém sabe o que são essas sequências?

^[[3231m
^[[4232m
^[[3130m

Essas sequências aparecem como tokens inválidos em um emulador de terminal pelo qual sou responsável e gostaria de adicionar suporte para essas sequências se puder encontrar a documentação adequada para elas.

As seguintes variáveis ​​de ambiente relacionadas ao terminal são definidas nos sistemas afetados:

TERM=xterm
COLORTERM=

Não tentei nenhuma outra configuração para essas duas variáveis.

vim é a versão 7.2, mas tentei versões mais recentes com o mesmo efeito.

Obrigado!

Foi útil?

Solução

O seu terminal suporta o modo de 88 ou 256 cores?Nesse caso, você provavelmente deveria usar um valor TERM como xterm-88color ou xterm-256color em vez de simples xterm.

tinteiro isenta especificamente o suporte para terminais que suportam apenas 8/16 cores.Do alto do tinteiro fonte:

" This should work in the GUI, rxvt-unicode (88 colour mode) and xterm (256
" colour mode). It won't work in 8/16 colour terminals.

O código que configura a coloração da sintaxe assume que se o terminal não suportar 88 cores, ele deverá suportar 256 cores.Ele não tenta fornecer valores alternativos para o caso de 8 cores (por exemplo,quando TERM=xterm).Talvez fosse bom se tinteiro emitiu uma mensagem de erro (e não modificou as configurações de cores) se o terminal não parecesse ter suporte de cores apropriado.


As sequências de controle que você está vendo resultam da tentativa de gerar uma sequência de controle de cores de terminal de 8 cores para um número de cor que está fora da faixa de 0 a 7 de entradas aceitáveis ​​para esse tipo de terminal.Então, essas sequências provavelmente não são válidas, mas também não são inteiramente intencionais (surgindo porque tinteiro assume suporte de 256 cores, mas o xterm A entrada terminfo só sabe como lidar com o suporte básico de 8 cores).

Por exemplo, tinteiro define o Normal cor de primeiro plano da sintaxe para 79 em terminais de 88 cores;isso é traduzido para 231 para terminais que não sejam de 88 cores (ou seja,para terminais de 256 cores, mas também para terminais de 8 cores xterm).

Quando você tenta formatar esse número de cores fora do intervalo com TERM=xterm, você obtém o resultado ^[[3231m que você encontrou:

% tput -T xterm setaf 231 | od -a
0000000  esc   [   3   2   3   1   m
0000007

(ou seja,inserindo 231 entre ^[[3 e m)

Se você usar xterm-256color, você obtém um resultado de aparência mais normal:

% tput -T xterm-256color setaf 231 | od -a
0000000  esc   [   3   8   ;   5   ;   2   3   1   m
0000013

(ou seja,inserindo 231 entre ^[[38;5; e m)

Da mesma forma, o Normal sintaxe A cor de fundo de 88 cores de 80 é traduzida para um valor de 256 cores de 232 e produz o erro ^[[4232m sequência para xterm (mas produziria o mais razoável ^[[48;5;232m sob xterm-256color).

Outras dicas

^[[3231m

parece muito com uma definição de cor feita/errada:

^[[32;31m

o que não faria muito sentido de qualquer maneira.

Isso acontece com um valor específico para $TERM ou por qualquer valor?Qual versão do Vim?De que emulador de terminal estamos falando?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top