xterm não quebra o texto corretamente

4

Estou configurando minhas colunas gnome-terminal e xterm (ainda não escolhi quais delas eu usarei) e tenho alguns problemas que gostaria de corrigir:

  • a área de digitação parece ser menor (menos colunas) do que a área de exibição
  • o texto digitado não é quebrado para a próxima linha quando chega ao fim - apenas continua voltando na mesma linha, sobrescrevendo o prompt

(eu configurei um prompt bash personalizado com o PS1 caso isso seja relevante)

$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 7.1 (wheezy)
Release:    7.1
Codename:   wheezy
$ echo $TERM
xterm
$ stty -a
[peter@mine ~] $ stty -a
speed 38400 baud; rows 52; columns 126; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = M-^?; eol2 = M-^?; swtch = M-^?; start = ^Q; stop = ^S; susp = ^Z;
rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 hupcl -cstopb cread -clocal -crtscts
-ignbrk brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc ixany imaxbel iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke
$[peter@mine ~] $ # the column width only goes up to here ------------------------------------------------>

os resultados são idênticos tanto no xterm quanto no gnome-terminal 3.4.1.1

e, como você pode ver, a saída do comando stty -a vai até a borda da tela, enquanto a digitação não vai tão longe.

Eu descobri que posso obter o resultado desejado configurando as colunas para um número muito grande, por exemplo:

$ stty cols 1800

isso corrige os dois problemas. É o caminho certo para resolver esse problema? Isso "quebrará" qualquer saída dos programas? Até agora eu tentei top e stty -a e estes parecem OK.

mais informações, conforme solicitado nos comentários

achei que se eu cat alguma entrada em um arquivo, as colunas realmente esticam a largura total da janela do terminal:

[peter@mine applications] $ cat > /tmp/asd
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasssssssssssssssssssssssssssssssssssssssssssssssssssssssssssqqqqqqqqqqqqqqqq
qqqq

isso implica que é realmente bash que está restringindo o número de colunas e não o terminal? Se sim, então como alterar o número de colunas no bash?

    
por mulllhausen 30.09.2013 / 16:02

2 respostas

8

É provável que você não tenha escapado corretamente do código ANSI na sua definição de prompt no seu ~/.bashrc

Por exemplo, um PS1 algo como:

    PS1='3[1;33m>3[0m '

... Enrolar-se-á mal, antes da largura da própria casca.

Colocar colchetes antes do caractere de escape ascii e após o terminador de definição corrigirá isso, resultando em uma quebra de linha esperada:

    PS1='\[3[1;33m\]>\[3[0m\] '      

Ou seja, 3 se torna \[3 e m se torna m\]

(Eu mesmo aprendi isso há algum tempo aqui ).

    
por 11.02.2014 / 22:27
1

Como já foi mencionado nos comentários, sua pergunta - mesmo depois de "esclarecer" - é incerta e "incompleta". Por exemplo, você ainda não está dizendo se está se referindo a xterm o programa / aplicativo / emulador de terminal ou o tipo do terminal ( ou seja, o valor que você recebe quando digita $ TERM. Independentemente disso, tentarei fornecer uma resposta - ou, pelo menos, guiá-lo na direção certa.

Dado o fato de você ter personalizado seu prompt bash, estou assumindo que essa será a raiz do seu problema. Há um número de discussões pertinentes , referências, informações sobre os usuários freqüentes com problemas de quebra de linha correr depois de personalizar o bash. Isso parece ser, na maioria dos casos, um problema com escape dos códigos de cores ANSI ; mais algumas Q & A em stackoverflow .

Mais uma vez, não tenho certeza como você fez a customização (que stty output não me diz nada), já que há algumas poucas opções para conseguir isso; no entanto, se você fez um backup de suas configurações padrão e arquivos , essa deve ser sua primeira linha de ação. Como alternativa, você também pode tentar shopt -s checkwinsize para ter certeza de que está selecionado ou apenas shopt -p fornecerá a listagem das opções do bash que são -s : selecionadas ou -u : não selecionado . Além disso, verifique suas páginas de manual para ter uma ideia sobre algumas dessas coisas, especialmente se for o seu shell de login.

Por fim, tente ser um pouco mais específico ao fazer perguntas; ou melhor ainda, pesquise antes por perguntas semelhantes que já possam ter sido feitas.

    
por 04.11.2013 / 04:48