Comportamento / renderização estranhos no tmux em osx

2

Eu tenho esse problema há algum tempo, e isso é muito chato, mas não consigo entender o que está errado. Quando inicio uma sessão do tmux no meu terminal, não importa se está no Terminal.app ou no iTerm2, sempre obtenho um espaço estranho entre o prompt e o texto que digito, aproximadamente 3 vezes o espaço que eu obtenho fora do tmux. Isso não seria um grande problema por si só, mas quando tento pressionar backspace para excluir algo ou usar o modo vi (zsh) para modificar algo, o cursor é exibido como se o texto estivesse na posição correta (a maneira como ele é exibido fora tmux) mas o texto está no lugar errado, então é impossível saber o que estou realmente modificando. Além disso, quando pressiono enter, posso ver o texto piscando na posição correta, mas isso não é muito útil nesse ponto.

Eu tentei relatar o tipo $ TERM com opções diferentes quando inicio o tmux, mas nenhum deles parece torná-lo melhor.

Alguém sabe qual poderia ser o problema?

EDIT: Este é o meu $ PROMPT / $ PS1:% {$ fg_bold [vermelho]%} ➜% {$ fg_bold [verde]%}% p% {$ fg [ciano]%}% c% {$ fg_bold [blue]%} $ (git_prompt_info)% {$ fg_bold [blue]%}%% {$ reset_color%}

    
por uorbe001 29.09.2013 / 12:22

2 respostas

3

Eu tenho visto um problema como este ao usar caracteres multi-byte (codificados por UTF-8) no prompt, mas somente quando a opção utf8 da janela tmux está desativada.

Para identificar esses caracteres, procure por qualquer forma "extravagante", símbolos especiais ou caracteres acentuados que estejam fora do repertório ASCII (ou seja, qualquer ponto de código Unicode além de U + 007F).

Para verificar se a opção utf8 está ativa, use este comando em uma janela que está com o problema:

tmux show-option -gw utf8 \; show-option -w utf8

(ou em um prompt tmux : sem o primeiro tmux e sem a barra invertida)

Se mostrar dois valores, o segundo é o valor ativo para essa janela. O primeiro (ou único) valor é o valor global que será usado se não houver um valor local / de janela estabelecido.

Se você estiver vendo um valor diferente daquele estabelecido pelo seu arquivo de configuração, provavelmente será necessário reiniciar o servidor (ou se as alterações feitas pelo seu arquivo de configuração forem idempotentes, então você pode source it: tmux source ~/.tmux.conf ).

O problema surge porque (sem utf8 ativado) tmux e seu emulador de terminal externo tem uma idéia diferente de quantas colunas são usadas para exibir cada caractere multibyte. tmux espera que um caractere multibyte ocupe várias colunas (uma para cada byte), mas seu emulador externo provavelmente está configurado para reconhecê-lo como um único caractere UTF-8 e, portanto, irá renderizá-lo em uma única coluna .

O problema é especialmente visível em um prompt zsh porque zsh tem o cuidado de rastrear onde o cursor está para saber quando a linha será quebrada e o que é necessário fazer para redesenhar corretamente o prompt. Infelizmente, a incompatibilidade entre (não utf8 ) tmux e o emulador externo (configurado em UTF-8) faz com que tmux relate uma posição do cursor que é várias colunas para o à direita da posição esperada (um espaço extra para cada byte extra em cada caractere multibyte no prompt).

A ativação de utf8 em tmux corrige o problema porque ambos tmux e o emulador externo reconhecerão as sequências de cada ponto de código UTF-8 multibyte como ocupando uma única coluna . Reconfigurar seu emulador externo para usar uma codificação de byte único também consertaria a discrepância, mas ao custo de não ser capaz de visualizar corretamente dados codificados em UTF-8 (embora essa visão basicamente mostre o que é tmux está "pensando" quando utf8 está desativado.

    
por 02.10.2013 / 22:02
0

Eu tive exatamente o mesmo erro no Terminal.app. O que consertou para mim foi ir para "settings / settings / advanced" e alterar "Declare terminal as" para xterm-256color. Não faço ideia do porquê:)

    
por 18.11.2014 / 11:03